// File: /workspace/github_cpp_makefile_star2_O3/vsklad[P]cgen/./acl/sha1.hpp
// Function: acl::SHA1<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>>> (&) [5], 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)[SHA1_HASH_SIZE],
                     Tracer<SHA1_WORD_SIZE, BIT>& tracer,
                     const uint32_t rounds = SHA1_ROUNDS_NUMBER) {
            
            assert(M_size > 0 && (M_size % SHA1_MESSAGE_BLOCK_SIZE) == 0);
            assert(rounds > 0 && rounds <= SHA1_ROUNDS_NUMBER);
            
            const Ref<Word> K[] = { 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6 };
            
            H[0] = 0x67452301;
            H[1] = 0xEFCDAB89;
            H[2] = 0x98BADCFE;
            H[3] = 0x10325476;
            H[4] = 0xC3D2E1F0;
            
            for (std::size_t block_index = 0; block_index < M_size / SHA1_MESSAGE_BLOCK_SIZE; block_index++) {
                Ref<Word> W[rounds];
                
                for (unsigned int t = 0; t < _min(SHA1_MESSAGE_BLOCK_SIZE, rounds); t++) {
                    W[t] = M[t];
                    tracer.trace("M", block_index * SHA1_MESSAGE_BLOCK_SIZE + t, M[t]);
                    tracer.trace("W", block_index * SHA1_MESSAGE_BLOCK_SIZE + t, M[t]);
                };
                
                for (unsigned int t = SHA1_MESSAGE_BLOCK_SIZE; t < rounds; t++) {
                    Ref<Word> eor_args[] = { W[t-3], W[t-8], W[t-14], W[t-16] };
                    W[t] = rotl(eor(eor_args), 1);
                    tracer.trace("W", t, W[t]);
                };
                
                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];
                
                for (unsigned int t = 0; t < rounds; t++) {
                    Ref<Word> ft = f(t, b, c, d);
                    tracer.trace("F", block_index * SHA1_MESSAGE_BLOCK_SIZE + t, ft);
                    
                    Ref<Word> temp_args[] = { rotl(a, 5), ft, e, W[t], K[t / 20] };
                    Ref<Word> temp = add(temp_args);
                    
                    e = d;
                    d = c;
                    c = rotl(b, 30);
                    b = a;
                    a = temp;
                    
                    tracer.trace("A", block_index * SHA1_MESSAGE_BLOCK_SIZE + t, a);
                };
                
                H[0] = H[0] + a;
                H[1] = H[1] + b;
                H[2] = H[2] + c;
                H[3] = H[3] + d;
                H[4] = H[4] + e;
                
                M += SHA1_MESSAGE_BLOCK_SIZE;
            };
            
            trace(tracer, "H", H);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %r9, -0x88(%rbp)
movq %rsi, -0xe8(%rbp)
movq %rdi, -0x138(%rbp)
testq %rdx, %rdx
je 0x2d381
movl %edx, %eax
andl $0xf, %eax
jne 0x2d381
movq %r8, -0x50(%rbp)
movq -0x88(%rbp), %rax
decl %eax
cmpl $0x50, %eax
jae 0x2d3a0
movq %rcx, %r12
movq %rdx, %r13
xorl %r14d, %r14d
leaq -0x110(%rbp), %rbx
movq %r14, (%rbx)
xorl %edi, %edi
movl $0x5a827999, %esi       # imm = 0x5A827999
callq 0x2ec16
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x108(%rbp), %r15
movq %r14, (%r15)
xorl %edi, %edi
movl $0x6ed9eba1, %esi       # imm = 0x6ED9EBA1
callq 0x2ec16
movq %r15, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x100(%rbp), %r15
movq $0x0, (%r15)
xorl %edi, %edi
movl $0x8f1bbcdc, %esi       # imm = 0x8F1BBCDC
callq 0x2ecb6
movq %r15, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0xf8(%rbp), %r15
movq $0x0, (%r15)
xorl %edi, %edi
movl $0xca62c1d6, %esi       # imm = 0xCA62C1D6
callq 0x2ecb6
movq %r15, %rdi
movq %rax, %rsi
callq 0x2d8ee
movq (%r12), %rdi
movl $0x67452301, %esi       # imm = 0x67452301
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
movq 0x8(%r12), %rdi
movl $0xefcdab89, %esi       # imm = 0xEFCDAB89
callq 0x2ecb6
movq %r13, %rbx
leaq 0x8(%r12), %rdi
movq %rdi, -0xd0(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x10(%r12), %rdi
movl $0x98badcfe, %esi       # imm = 0x98BADCFE
callq 0x2ecb6
leaq 0x10(%r12), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x2d8ee
movq 0x18(%r12), %rdi
movl $0x10325476, %esi       # imm = 0x10325476
callq 0x2ec16
movq %r14, -0xc8(%rbp)
leaq 0x18(%r12), %rdi
movq %rdi, -0xc0(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x20(%r12), %rdi
movl $0xc3d2e1f0, %esi       # imm = 0xC3D2E1F0
callq 0x2ecb6
leaq 0x20(%r12), %rdi
movq %rdi, -0xb8(%rbp)
movq %rax, %rsi
callq 0x2d8ee
shrq $0x4, %rbx
movq -0x88(%rbp), %rax
movl %eax, %r15d
cmpl $0x10, %eax
movl $0x10, %ecx
cmovbl %eax, %ecx
leaq (,%r15,8), %rax
movq %rax, -0xe0(%rbp)
shll $0x3, %ecx
movq %rcx, -0x140(%rbp)
xorl %r14d, %r14d
leaq 0xf(,%r15,8), %rax
andq $-0x10, %rax
movq %rax, -0x120(%rbp)
movq $0x0, -0x90(%rbp)
movq %r15, -0x40(%rbp)
movq %r12, -0xd8(%rbp)
movq %rbx, -0x118(%rbp)
movq %rsp, -0x128(%rbp)
movq %rsp, %rbx
subq -0x120(%rbp), %rbx
movq %rbx, %rsp
movq %rbx, %rdi
xorl %esi, %esi
movq -0xe0(%rbp), %rdx
callq 0xb160
movq %r14, -0x130(%rbp)
movq %r14, %r15
xorl %r14d, %r14d
movq -0xe8(%rbp), %rax
leaq (%rax,%r14), %r13
movq %rbx, %r12
leaq (%rbx,%r14), %rdi
movq (%rax,%r14), %rsi
callq 0x2d8ee
movq -0x50(%rbp), %rbx
movq (%rbx), %rax
movq %rbx, %rdi
leaq 0x1bce5(%rip), %rsi     # 0x489ab
movq %r15, %rdx
movq %r13, %rcx
callq *0x8(%rax)
movq (%rbx), %rax
movq %rbx, %rdi
leaq 0x18c45(%rip), %rsi     # 0x45921
movq %r15, %rdx
movq %r13, %rcx
callq *0x8(%rax)
addq $0x8, %r14
incq %r15
cmpq %r14, -0x140(%rbp)
movq %r12, %rbx
jne 0x2cc9a
cmpl $0x11, -0x88(%rbp)
movq -0x40(%rbp), %r15
jb 0x2ce40
movl $0x10, %r13d
movq -0x18(%rbx,%r13,8), %rax
movq %rax, -0x80(%rbp)
testq %rax, %rax
movq -0x50(%rbp), %r14
je 0x2cd2c
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x40(%rbx,%r13,8), %rax
movq %rax, -0x78(%rbp)
testq %rax, %rax
je 0x2cd45
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x70(%rbx,%r13,8), %rax
movq %rax, -0x70(%rbp)
testq %rax, %rax
je 0x2cd5e
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x80(%rbx,%r13,8), %rax
movq %rax, -0x68(%rbp)
testq %rax, %rax
je 0x2cd77
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movl $0x4, %ecx
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
leaq -0x80(%rbp), %rdx
callq 0x2eec4
movq -0x30(%rbp), %rdx
leaq -0x38(%rbp), %rdi
xorl %esi, %esi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x2ed8e
movq -0x38(%rbp), %rax
movq %rax, (%rbx,%r13,8)
movq $0x0, -0x38(%rbp)
movq -0x30(%rbp), %rax
testq %rax, %rax
je 0x2cdd9
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2cdd4
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2cdd9
decl %eax
movl %eax, 0x8(%rdi)
leaq (%rbx,%r13,8), %rcx
movq (%r14), %rax
movq %r14, %rdi
leaq 0x18b37(%rip), %rsi     # 0x45921
movq %r13, %rdx
callq *0x8(%rax)
movl $0x18, %r14d
movq -0x80(%rbp,%r14), %rax
testq %rax, %rax
je 0x2ce2a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2ce1c
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2ce21
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x80(%rbp,%r14)
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x2cdf6
incq %r13
cmpq %r15, %r13
jne 0x2cd0f
movq -0xd8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
testq %rax, %rax
movq -0x50(%rbp), %r14
je 0x2ce65
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0xd0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
testq %rax, %rax
movq -0xc0(%rbp), %rdx
je 0x2ce8a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0xc8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
testq %rax, %rax
je 0x2cea8
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%rdx), %rax
movq %rax, -0x48(%rbp)
testq %rax, %rax
je 0x2cebf
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0xb8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x58(%rbp)
testq %rax, %rax
je 0x2cedd
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x90(%rbp), %rax
shlq $0x4, %rax
movq %rax, -0x148(%rbp)
xorl %r13d, %r13d
leaq -0xa0(%rbp), %r12
movq %r12, %rdi
movq -0x138(%rbp), %rsi
movl %r13d, %edx
leaq -0x38(%rbp), %rcx
leaq -0x30(%rbp), %r8
leaq -0x48(%rbp), %r9
callq 0x2eae6
movq -0x148(%rbp), %rax
leaq (%rax,%r13), %r15
movq (%r14), %rax
movq %r14, %rdi
leaq 0x189b9(%rip), %rsi     # 0x458e8
movq %r15, %rdx
movq %r12, %rcx
callq *0x8(%rax)
movq -0xb0(%rbp), %rdx
leaq -0x80(%rbp), %rdi
xorl %esi, %esi
movl $0xfffffffb, %ecx       # imm = 0xFFFFFFFB
callq 0x2ed8e
movq -0xa0(%rbp), %rax
movq %rax, -0x78(%rbp)
testq %rax, %rax
je 0x2cf6a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x58(%rbp), %rax
movq %rax, -0x70(%rbp)
testq %rax, %rax
je 0x2cf82
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%rbx,%r13,8), %rax
movq %rax, -0x68(%rbp)
testq %rax, %rax
je 0x2cf9a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movl %r13d, %eax
movl $0xcccccccd, %ecx       # imm = 0xCCCCCCCD
imulq %rcx, %rax
shrq $0x21, %rax
andl $-0x8, %eax
movq -0x110(%rbp,%rax), %rax
movq %rax, -0x60(%rbp)
testq %rax, %rax
je 0x2cfc9
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
leaq -0x98(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x2eb79
movq -0x48(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x2d8ee
movq -0x30(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x2d8ee
movq -0x38(%rbp), %rdx
leaq -0x150(%rbp), %rdi
xorl %esi, %esi
movl $0xffffffe2, %ecx       # imm = 0xFFFFFFE2
callq 0x2ed8e
movq -0x150(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0xb0(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x2d8ee
movq -0x98(%rbp), %rsi
leaq -0xb0(%rbp), %r12
movq %r12, %rdi
callq 0x2d8ee
movq (%r14), %rax
movq %r14, %rdi
leaq 0x1c34c(%rip), %rsi     # 0x49394
movq %r15, %rdx
movq %r12, %rcx
callq *0x8(%rax)
movq -0x98(%rbp), %rax
testq %rax, %rax
movq -0x40(%rbp), %r15
je 0x2d082
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d07d
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d082
decl %eax
movl %eax, 0x8(%rdi)
movl $0x20, %r14d
movq -0x80(%rbp,%r14), %rax
testq %rax, %rax
je 0x2d0bc
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d0ae
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d0b3
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x80(%rbp,%r14)
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x2d088
movq -0xa0(%rbp), %rax
testq %rax, %rax
movq -0x50(%rbp), %r14
je 0x2d0f7
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d0f2
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d0f7
decl %eax
movl %eax, 0x8(%rdi)
incq %r13
cmpq %r15, %r13
jne 0x2cef2
movq -0xd8(%rbp), %r14
movq (%r14), %rdx
movq -0xb0(%rbp), %rcx
leaq -0x80(%rbp), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x80(%rbp), %rax
movq %rax, (%r14)
movq %r14, %r13
movq 0x8(%r14), %rdx
movq -0x38(%rbp), %rcx
movq %r12, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x80(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rax, (%rcx)
movq -0xc8(%rbp), %r14
movq (%r14), %rdx
movq -0x30(%rbp), %rcx
movq %r12, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x80(%rbp), %rax
movq %rax, (%r14)
movq -0xc0(%rbp), %r14
movq (%r14), %rdx
movq -0x48(%rbp), %rcx
movq %r12, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x80(%rbp), %rax
movq %rax, (%r14)
movq -0xb8(%rbp), %r14
movq (%r14), %rdx
movq -0x58(%rbp), %rcx
movq %r12, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x80(%rbp), %rax
movq %rax, (%r14)
movq -0x58(%rbp), %rax
testq %rax, %rax
movq %r13, %r12
je 0x2d1d6
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d1d1
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d1d6
decl %eax
movl %eax, 0x8(%rdi)
movq -0x48(%rbp), %rax
testq %rax, %rax
je 0x2d200
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d1fb
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d200
decl %eax
movl %eax, 0x8(%rdi)
movq -0x30(%rbp), %rax
testq %rax, %rax
je 0x2d22a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d225
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d22a
decl %eax
movl %eax, 0x8(%rdi)
movq -0x38(%rbp), %rax
testq %rax, %rax
je 0x2d254
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d24f
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d254
decl %eax
movl %eax, 0x8(%rdi)
movq -0xb0(%rbp), %rax
testq %rax, %rax
je 0x2d281
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d27c
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d281
decl %eax
movl %eax, 0x8(%rdi)
subq $-0x80, -0xe8(%rbp)
movq -0xe0(%rbp), %r14
movq -0x8(%rbx,%r14), %rax
testq %rax, %rax
je 0x2d2c4
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d2b6
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d2bb
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x8(%rbx,%r14)
addq $-0x8, %r14
jne 0x2d290
movq -0x128(%rbp), %rsp
movq -0x90(%rbp), %rcx
incq %rcx
movq -0x130(%rbp), %r14
addq $0x10, %r14
movq -0x118(%rbp), %rbx
movq %rcx, -0x90(%rbp)
cmpq %rbx, %rcx
jne 0x2cc68
xorl %ebx, %ebx
leaq 0x1c090(%rip), %r15     # 0x49396
movq -0x50(%rbp), %r14
movq (%r14), %rax
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq *0x8(%rax)
incq %rbx
addq $0x8, %r12
cmpq $0x5, %rbx
jne 0x2d30a
movl $0x18, %ebx
movq -0x110(%rbp,%rbx), %rax
testq %rax, %rax
je 0x2d368
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d357
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d35c
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x110(%rbp,%rbx)
addq $-0x8, %rbx
cmpq $-0x8, %rbx
jne 0x2d32e
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1bef8(%rip), %rdi     # 0x49280
leaq 0x1bf27(%rip), %rsi     # 0x492b6
leaq 0x1bf2f(%rip), %rcx     # 0x492c5
movl $0x34, %edx
callq 0xb180
leaq 0x1bfc2(%rip), %rdi     # 0x49369
leaq 0x1bf08(%rip), %rsi     # 0x492b6
leaq 0x1bf10(%rip), %rcx     # 0x492c5
movl $0x35, %edx
callq 0xb180
jmp 0x2d3f4
jmp 0x2d3f4
jmp 0x2d3f4
jmp 0x2d3f4
jmp 0x2d3f4
jmp 0x2d3cd
jmp 0x2d3cd
movq %rax, %r14
addq $-0x8, %r15
movq (%r15), %rdi
testq %rdi, %rdi
jne 0x2d3ea
leaq -0x8(%r15), %rax
cmpq %rbx, %r15
movq %rax, %r15
jne 0x2d3d4
jmp 0x2d427
movq %r15, %rsi
callq 0xb82d
jmp 0x2d3dc
movq %rax, %r14
movl $0x18, %ebx
movq -0x110(%rbp,%rbx), %rdi
testq %rdi, %rdi
jne 0x2d415
addq $-0x8, %rbx
cmpq $-0x8, %rbx
jne 0x2d3fc
jmp 0x2d427
leaq (%rbx,%rbp), %rsi
addq $-0x110, %rsi           # imm = 0xFEF0
callq 0xb864
jmp 0x2d409
movq %r14, %rdi
callq 0xb4e0
jmp 0x2d496
jmp 0x2d496
jmp 0x2d496
jmp 0x2d496
jmp 0x2d496
jmp 0x2d43b
movq %rax, %r14
jmp 0x2d461
movq %rax, %r14
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x2d461
leaq -0xb0(%rbp), %r15
movq %r14, %rsi
movq %r15, %rcx
callq 0xb740
movq (%r15), %r14
movl $0x18, %r15d
movq -0x80(%rbp,%r15), %rdi
testq %rdi, %rdi
jne 0x2d480
addq $-0x8, %r15
cmpq $-0x8, %r15
jne 0x2d467
jmp 0x2d613
leaq (%r15,%rbp), %rsi
addq $-0x80, %rsi
callq 0xb7bf
jmp 0x2d471
jmp 0x2d49b
jmp 0x2d5af
movq %rax, %r14
jmp 0x2d4cf
movq %rax, %r14
movq -0x40(%rbp), %r15
movq -0xa0(%rbp), %rax
testq %rax, %rax
je 0x2d4cf
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d4ca
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d4cf
decl %eax
movl %eax, 0x8(%rdi)
movq -0x58(%rbp), %rax
testq %rax, %rax
je 0x2d4f9
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d4f4
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d4f9
decl %eax
movl %eax, 0x8(%rdi)
movq -0x48(%rbp), %rax
testq %rax, %rax
je 0x2d523
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d51e
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d523
decl %eax
movl %eax, 0x8(%rdi)
movq -0x30(%rbp), %rax
testq %rax, %rax
je 0x2d54d
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d548
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d54d
decl %eax
movl %eax, 0x8(%rdi)
movq -0x38(%rbp), %rax
testq %rax, %rax
je 0x2d577
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d572
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d577
decl %eax
movl %eax, 0x8(%rdi)
movq -0xb0(%rbp), %rax
testq %rax, %rax
je 0x2d617
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d5a3
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d617
decl %eax
movl %eax, 0x8(%rdi)
jmp 0x2d617
movq %rax, %r14
jmp 0x2d5df
movq %rax, %r14
movq -0x98(%rbp), %rax
testq %rax, %rax
je 0x2d5df
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x2d5da
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x2d5df
decl %eax
movl %eax, 0x8(%rdi)
movl $0x20, %r15d
movq -0x80(%rbp,%r15), %rdi
testq %rdi, %rdi
jne 0x2d5fe
addq $-0x8, %r15
cmpq $-0x8, %r15
jne 0x2d5e5
jmp 0x2d49e
leaq (%r15,%rbp), %rsi
addq $-0x80, %rsi
callq 0xb788
jmp 0x2d5ef
movq %rax, %r14
movq %r12, %rbx
movq -0x40(%rbp), %r15
addq $-0x8, %rbx
shlq $0x3, %r15
movq (%rbx,%r15), %rdi
testq %rdi, %rdi
jne 0x2d633
addq $-0x8, %r15
jne 0x2d61f
jmp 0x2d3f7
leaq (%rbx,%r15), %rsi
callq 0xb7f6
jmp 0x2d628