// File: 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
subq $0x660, %rsp            # imm = 0x660
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x4b8(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x18(%rbp)
movb %al, -0x4a9(%rbp)
jbe 0x46b52
movq -0x18(%rbp), %rax
andq $0xf, %rax
cmpq $0x0, %rax
sete %al
movb %al, -0x4a9(%rbp)
movb -0x4a9(%rbp), %al
testb $0x1, %al
jne 0x46b5e
jmp 0x46b60
jmp 0x46b7f
leaq 0x1f74a(%rip), %rdi     # 0x662b1
leaq 0x1f77b(%rip), %rsi     # 0x662e9
movl $0x3d, %edx
leaq 0x1f780(%rip), %rcx     # 0x662fa
callq 0xd1c0
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x4b9(%rbp)
jbe 0x46b9a
cmpl $0x40, -0x2c(%rbp)
setbe %al
movb %al, -0x4b9(%rbp)
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x46ba6
jmp 0x46ba8
jmp 0x46bc7
leaq 0x1f7f1(%rip), %rdi     # 0x663a0
leaq 0x1f733(%rip), %rsi     # 0x662e9
movl $0x3e, %edx
leaq 0x1f738(%rip), %rcx     # 0x662fa
callq 0xd1c0
leaq -0x230(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x428a2f98, -0x23c(%rbp) # imm = 0x428A2F98
leaq -0x23c(%rbp), %rsi
callq 0x44450
jmp 0x46bed
leaq -0x228(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x71374491, -0x250(%rbp) # imm = 0x71374491
leaq -0x250(%rbp), %rsi
callq 0x44450
jmp 0x46c13
leaq -0x220(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xb5c0fbcf, -0x254(%rbp) # imm = 0xB5C0FBCF
leaq -0x254(%rbp), %rsi
callq 0x44480
jmp 0x46c39
leaq -0x218(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xe9b5dba5, -0x258(%rbp) # imm = 0xE9B5DBA5
leaq -0x258(%rbp), %rsi
callq 0x44480
jmp 0x46c5f
leaq -0x210(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x3956c25b, -0x25c(%rbp) # imm = 0x3956C25B
leaq -0x25c(%rbp), %rsi
callq 0x44450
jmp 0x46c85
leaq -0x208(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x59f111f1, -0x260(%rbp) # imm = 0x59F111F1
leaq -0x260(%rbp), %rsi
callq 0x44450
jmp 0x46cab
leaq -0x200(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x923f82a4, -0x264(%rbp) # imm = 0x923F82A4
leaq -0x264(%rbp), %rsi
callq 0x44480
jmp 0x46cd1
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xab1c5ed5, -0x268(%rbp) # imm = 0xAB1C5ED5
leaq -0x268(%rbp), %rsi
callq 0x44480
jmp 0x46cf7
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xd807aa98, -0x26c(%rbp) # imm = 0xD807AA98
leaq -0x26c(%rbp), %rsi
callq 0x44480
jmp 0x46d1d
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x12835b01, -0x270(%rbp) # imm = 0x12835B01
leaq -0x270(%rbp), %rsi
callq 0x44450
jmp 0x46d43
leaq -0x1e0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x243185be, -0x274(%rbp) # imm = 0x243185BE
leaq -0x274(%rbp), %rsi
callq 0x44450
jmp 0x46d69
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x550c7dc3, -0x278(%rbp) # imm = 0x550C7DC3
leaq -0x278(%rbp), %rsi
callq 0x44450
jmp 0x46d8f
leaq -0x1d0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x72be5d74, -0x27c(%rbp) # imm = 0x72BE5D74
leaq -0x27c(%rbp), %rsi
callq 0x44450
jmp 0x46db5
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x80deb1fe, -0x280(%rbp) # imm = 0x80DEB1FE
leaq -0x280(%rbp), %rsi
callq 0x44480
jmp 0x46ddb
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x9bdc06a7, -0x284(%rbp) # imm = 0x9BDC06A7
leaq -0x284(%rbp), %rsi
callq 0x44480
jmp 0x46e01
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xc19bf174, -0x288(%rbp) # imm = 0xC19BF174
leaq -0x288(%rbp), %rsi
callq 0x44480
jmp 0x46e27
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xe49b69c1, -0x28c(%rbp) # imm = 0xE49B69C1
leaq -0x28c(%rbp), %rsi
callq 0x44480
jmp 0x46e4d
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xefbe4786, -0x290(%rbp) # imm = 0xEFBE4786
leaq -0x290(%rbp), %rsi
callq 0x44480
jmp 0x46e73
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xfc19dc6, -0x294(%rbp) # imm = 0xFC19DC6
leaq -0x294(%rbp), %rsi
callq 0x44450
jmp 0x46e99
leaq -0x198(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x240ca1cc, -0x298(%rbp) # imm = 0x240CA1CC
leaq -0x298(%rbp), %rsi
callq 0x44450
jmp 0x46ebf
leaq -0x190(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x2de92c6f, -0x29c(%rbp) # imm = 0x2DE92C6F
leaq -0x29c(%rbp), %rsi
callq 0x44450
jmp 0x46ee5
leaq -0x188(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x4a7484aa, -0x2a0(%rbp) # imm = 0x4A7484AA
leaq -0x2a0(%rbp), %rsi
callq 0x44450
jmp 0x46f0b
leaq -0x180(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x5cb0a9dc, -0x2a4(%rbp) # imm = 0x5CB0A9DC
leaq -0x2a4(%rbp), %rsi
callq 0x44450
jmp 0x46f31
leaq -0x178(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x76f988da, -0x2a8(%rbp) # imm = 0x76F988DA
leaq -0x2a8(%rbp), %rsi
callq 0x44450
jmp 0x46f57
leaq -0x170(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x983e5152, -0x2ac(%rbp) # imm = 0x983E5152
leaq -0x2ac(%rbp), %rsi
callq 0x44480
jmp 0x46f7d
leaq -0x168(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xa831c66d, -0x2b0(%rbp) # imm = 0xA831C66D
leaq -0x2b0(%rbp), %rsi
callq 0x44480
jmp 0x46fa3
leaq -0x160(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xb00327c8, -0x2b4(%rbp) # imm = 0xB00327C8
leaq -0x2b4(%rbp), %rsi
callq 0x44480
jmp 0x46fc9
leaq -0x158(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xbf597fc7, -0x2b8(%rbp) # imm = 0xBF597FC7
leaq -0x2b8(%rbp), %rsi
callq 0x44480
jmp 0x46fef
leaq -0x150(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xc6e00bf3, -0x2bc(%rbp) # imm = 0xC6E00BF3
leaq -0x2bc(%rbp), %rsi
callq 0x44480
jmp 0x47015
leaq -0x148(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xd5a79147, -0x2c0(%rbp) # imm = 0xD5A79147
leaq -0x2c0(%rbp), %rsi
callq 0x44480
jmp 0x4703b
leaq -0x140(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x6ca6351, -0x2c4(%rbp) # imm = 0x6CA6351
leaq -0x2c4(%rbp), %rsi
callq 0x44450
jmp 0x47061
leaq -0x138(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x14292967, -0x2c8(%rbp) # imm = 0x14292967
leaq -0x2c8(%rbp), %rsi
callq 0x44450
jmp 0x47087
leaq -0x130(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x27b70a85, -0x2cc(%rbp) # imm = 0x27B70A85
leaq -0x2cc(%rbp), %rsi
callq 0x44450
jmp 0x470ad
leaq -0x128(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x2e1b2138, -0x2d0(%rbp) # imm = 0x2E1B2138
leaq -0x2d0(%rbp), %rsi
callq 0x44450
jmp 0x470d3
leaq -0x120(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x4d2c6dfc, -0x2d4(%rbp) # imm = 0x4D2C6DFC
leaq -0x2d4(%rbp), %rsi
callq 0x44450
jmp 0x470f9
leaq -0x118(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x53380d13, -0x2d8(%rbp) # imm = 0x53380D13
leaq -0x2d8(%rbp), %rsi
callq 0x44450
jmp 0x4711f
leaq -0x110(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x650a7354, -0x2dc(%rbp) # imm = 0x650A7354
leaq -0x2dc(%rbp), %rsi
callq 0x44450
jmp 0x47145
leaq -0x108(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x766a0abb, -0x2e0(%rbp) # imm = 0x766A0ABB
leaq -0x2e0(%rbp), %rsi
callq 0x44450
jmp 0x4716b
leaq -0x100(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x81c2c92e, -0x2e4(%rbp) # imm = 0x81C2C92E
leaq -0x2e4(%rbp), %rsi
callq 0x44480
jmp 0x47191
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x92722c85, -0x2e8(%rbp) # imm = 0x92722C85
leaq -0x2e8(%rbp), %rsi
callq 0x44480
jmp 0x471b7
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xa2bfe8a1, -0x2ec(%rbp) # imm = 0xA2BFE8A1
leaq -0x2ec(%rbp), %rsi
callq 0x44480
jmp 0x471dd
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xa81a664b, -0x2f0(%rbp) # imm = 0xA81A664B
leaq -0x2f0(%rbp), %rsi
callq 0x44480
jmp 0x47203
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xc24b8b70, -0x2f4(%rbp) # imm = 0xC24B8B70
leaq -0x2f4(%rbp), %rsi
callq 0x44480
jmp 0x47229
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xc76c51a3, -0x2f8(%rbp) # imm = 0xC76C51A3
leaq -0x2f8(%rbp), %rsi
callq 0x44480
jmp 0x4724f
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xd192e819, -0x2fc(%rbp) # imm = 0xD192E819
leaq -0x2fc(%rbp), %rsi
callq 0x44480
jmp 0x47275
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xd6990624, -0x300(%rbp) # imm = 0xD6990624
leaq -0x300(%rbp), %rsi
callq 0x44480
jmp 0x4729b
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xf40e3585, -0x304(%rbp) # imm = 0xF40E3585
leaq -0x304(%rbp), %rsi
callq 0x44480
jmp 0x472c1
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x106aa070, -0x308(%rbp) # imm = 0x106AA070
leaq -0x308(%rbp), %rsi
callq 0x44450
jmp 0x472e7
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x19a4c116, -0x30c(%rbp) # imm = 0x19A4C116
leaq -0x30c(%rbp), %rsi
callq 0x44450
jmp 0x4730d
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x1e376c08, -0x310(%rbp) # imm = 0x1E376C08
leaq -0x310(%rbp), %rsi
callq 0x44450
jmp 0x47333
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x2748774c, -0x314(%rbp) # imm = 0x2748774C
leaq -0x314(%rbp), %rsi
callq 0x44450
jmp 0x47359
leaq -0x98(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x34b0bcb5, -0x318(%rbp) # imm = 0x34B0BCB5
leaq -0x318(%rbp), %rsi
callq 0x44450
jmp 0x4737f
leaq -0x90(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x391c0cb3, -0x31c(%rbp) # imm = 0x391C0CB3
leaq -0x31c(%rbp), %rsi
callq 0x44450
jmp 0x473a5
leaq -0x88(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x4ed8aa4a, -0x320(%rbp) # imm = 0x4ED8AA4A
leaq -0x320(%rbp), %rsi
callq 0x44450
jmp 0x473cb
leaq -0x80(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x5b9cca4f, -0x324(%rbp) # imm = 0x5B9CCA4F
leaq -0x324(%rbp), %rsi
callq 0x44450
jmp 0x473ee
leaq -0x78(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x682e6ff3, -0x328(%rbp) # imm = 0x682E6FF3
leaq -0x328(%rbp), %rsi
callq 0x44450
jmp 0x47411
leaq -0x70(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x748f82ee, -0x32c(%rbp) # imm = 0x748F82EE
leaq -0x32c(%rbp), %rsi
callq 0x44450
jmp 0x47434
leaq -0x68(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x78a5636f, -0x330(%rbp) # imm = 0x78A5636F
leaq -0x330(%rbp), %rsi
callq 0x44450
jmp 0x47457
leaq -0x60(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x84c87814, -0x334(%rbp) # imm = 0x84C87814
leaq -0x334(%rbp), %rsi
callq 0x44480
jmp 0x4747a
leaq -0x58(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x8cc70208, -0x338(%rbp) # imm = 0x8CC70208
leaq -0x338(%rbp), %rsi
callq 0x44480
jmp 0x4749d
leaq -0x50(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x90befffa, -0x33c(%rbp) # imm = 0x90BEFFFA
leaq -0x33c(%rbp), %rsi
callq 0x44480
jmp 0x474c0
leaq -0x48(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xa4506ceb, -0x340(%rbp) # imm = 0xA4506CEB
leaq -0x340(%rbp), %rsi
callq 0x44480
jmp 0x474e3
leaq -0x40(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xbef9a3f7, -0x344(%rbp) # imm = 0xBEF9A3F7
leaq -0x344(%rbp), %rsi
callq 0x44480
jmp 0x47506
leaq -0x38(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0xc67178f2, -0x348(%rbp) # imm = 0xC67178F2
leaq -0x348(%rbp), %rsi
callq 0x44480
jmp 0x47529
movl $0x6a09e667, -0x34c(%rbp) # imm = 0x6A09E667
movq -0x20(%rbp), %rdi
leaq -0x34c(%rbp), %rsi
callq 0x444b0
jmp 0x47545
movl $0xbb67ae85, -0x350(%rbp) # imm = 0xBB67AE85
movq -0x20(%rbp), %rdi
addq $0x8, %rdi
leaq -0x350(%rbp), %rsi
callq 0x444f0
jmp 0x47565
movl $0x3c6ef372, -0x354(%rbp) # imm = 0x3C6EF372
movq -0x20(%rbp), %rdi
addq $0x10, %rdi
leaq -0x354(%rbp), %rsi
callq 0x444b0
jmp 0x47585
movl $0xa54ff53a, -0x358(%rbp) # imm = 0xA54FF53A
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
leaq -0x358(%rbp), %rsi
callq 0x444f0
jmp 0x475a5
movl $0x510e527f, -0x35c(%rbp) # imm = 0x510E527F
movq -0x20(%rbp), %rdi
addq $0x20, %rdi
leaq -0x35c(%rbp), %rsi
callq 0x444b0
jmp 0x475c5
movl $0x9b05688c, -0x360(%rbp) # imm = 0x9B05688C
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
leaq -0x360(%rbp), %rsi
callq 0x444f0
jmp 0x475e5
movl $0x1f83d9ab, -0x364(%rbp) # imm = 0x1F83D9AB
movq -0x20(%rbp), %rdi
addq $0x30, %rdi
leaq -0x364(%rbp), %rsi
callq 0x444b0
jmp 0x47605
movl $0x5be0cd19, -0x368(%rbp) # imm = 0x5BE0CD19
movq -0x20(%rbp), %rdi
addq $0x38, %rdi
leaq -0x368(%rbp), %rsi
callq 0x444b0
jmp 0x47625
movq $0x0, -0x370(%rbp)
movq -0x370(%rbp), %rax
movq -0x18(%rbp), %rcx
shrq $0x4, %rcx
cmpq %rcx, %rax
jae 0x4847f
movl -0x2c(%rbp), %eax
movq %rax, -0x4d0(%rbp)
movq %rsp, %rcx
movq %rcx, -0x378(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x4c8(%rbp)
movq %rcx, %rsp
movq %rax, -0x380(%rbp)
cmpq $0x0, %rax
je 0x476de
movq -0x4c8(%rbp), %rax
movq -0x4d0(%rbp), %rdx
shlq $0x3, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x4e0(%rbp)
movq %rax, -0x4d8(%rbp)
movq -0x4d8(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x40b00
jmp 0x476c0
movq -0x4e0(%rbp), %rcx
movq -0x4e8(%rbp), %rax
addq $0x8, %rax
cmpq %rcx, %rax
movq %rax, -0x4d8(%rbp)
jne 0x476ab
movl $0x0, -0x384(%rbp)
movl -0x384(%rbp), %eax
movl %eax, -0x4ec(%rbp)
movl $0x10, %eax
cmpl -0x2c(%rbp), %eax
jae 0x4770b
movl $0x10, %eax
movl %eax, -0x4f0(%rbp)
jmp 0x47714
movl -0x2c(%rbp), %eax
movl %eax, -0x4f0(%rbp)
movl -0x4ec(%rbp), %eax
movl -0x4f0(%rbp), %ecx
cmpl %ecx, %eax
jae 0x478b4
movq -0x4c8(%rbp), %rax
movq -0x10(%rbp), %rdx
movl -0x384(%rbp), %ecx
leaq (%rdx,%rcx,8), %rsi
leaq (%rax,%rcx,8), %rdi
callq 0x44530
movq -0x28(%rbp), %rdi
movq -0x370(%rbp), %rdx
shlq $0x4, %rdx
movl -0x384(%rbp), %eax
movl %eax, %ecx
addq %rcx, %rdx
movq -0x10(%rbp), %rax
leaq (%rax,%rcx,8), %rcx
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq 0x1d638(%rip), %rsi     # 0x64dae
callq *%rax
jmp 0x4777a
movq -0x28(%rbp), %rdi
movq -0x370(%rbp), %rdx
shlq $0x4, %rdx
movl -0x384(%rbp), %eax
movl %eax, %ecx
addq %rcx, %rdx
movq -0x10(%rbp), %rax
leaq (%rax,%rcx,8), %rcx
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq 0x1a18f(%rip), %rsi     # 0x61939
callq *%rax
jmp 0x477ae
jmp 0x477b0
movl -0x384(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x384(%rbp)
jmp 0x476e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
movq -0x238(%rbp), %rax
leaq -0x230(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x4f8(%rbp)
je 0x47821
movq -0x4f8(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x500(%rbp)
callq 0x40b20
movq -0x500(%rbp), %rax
leaq -0x230(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x4f8(%rbp)
jne 0x477f0
jmp 0x48534
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x484e6
movq -0x4c8(%rbp), %rcx
movq %rax, %rsi
movq -0x4e8(%rbp), %rax
movq %rsi, -0x248(%rbp)
movl %edx, -0x24c(%rbp)
cmpq %rax, %rcx
movq %rax, -0x508(%rbp)
je 0x47898
movq -0x508(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x510(%rbp)
callq 0x40b20
movq -0x4c8(%rbp), %rcx
movq -0x510(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x508(%rbp)
jne 0x47867
jmp 0x484e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x48428
movl $0x10, -0x388(%rbp)
movl -0x388(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jae 0x47b1c
movq -0x4b8(%rbp), %rsi
movq -0x4c8(%rbp), %rax
leaq -0x3b0(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
movl -0x388(%rbp), %ecx
addl $-0x2, %ecx
leaq (%rax,%rcx,8), %rdx
callq 0x48540
jmp 0x478fd
movq -0x4c8(%rbp), %rax
leaq -0x3a8(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
movl -0x388(%rbp), %ecx
addl $-0x7, %ecx
leaq (%rax,%rcx,8), %rsi
callq 0x44560
jmp 0x47926
movq -0x4b8(%rbp), %rsi
movq -0x4c8(%rbp), %rax
leaq -0x3a0(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
movl -0x388(%rbp), %ecx
addl $-0xf, %ecx
leaq (%rax,%rcx,8), %rdx
callq 0x486a0
jmp 0x47956
movq -0x4c8(%rbp), %rax
leaq -0x398(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
movl -0x388(%rbp), %ecx
addl $-0x10, %ecx
leaq (%rax,%rcx,8), %rsi
callq 0x44560
jmp 0x4797f
leaq -0x3c0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x48800
jmp 0x47994
movq -0x4c8(%rbp), %rax
movl -0x388(%rbp), %ecx
leaq (%rax,%rcx,8), %rdi
leaq -0x3c0(%rbp), %rsi
movq %rsi, -0x518(%rbp)
callq 0x44630
movq -0x518(%rbp), %rdi
callq 0x40b20
movq -0x4c8(%rbp), %rax
movq -0x28(%rbp), %rdi
movq -0x370(%rbp), %rdx
shlq $0x4, %rdx
movl -0x388(%rbp), %ecx
addq %rcx, %rdx
leaq (%rax,%rcx,8), %rcx
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq 0x19f44(%rip), %rsi     # 0x61939
callq *%rax
jmp 0x479f9
leaq -0x3b0(%rbp), %rax
movq %rax, -0x528(%rbp)
addq $0x20, %rax
movq %rax, -0x520(%rbp)
movq -0x520(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x530(%rbp)
callq 0x40b20
movq -0x528(%rbp), %rcx
movq -0x530(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x520(%rbp)
jne 0x47a12
jmp 0x47a45
movl -0x388(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x388(%rbp)
jmp 0x478be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
movq -0x3b8(%rbp), %rax
leaq -0x3b0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x538(%rbp)
je 0x47ab6
movq -0x538(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x540(%rbp)
callq 0x40b20
movq -0x540(%rbp), %rax
leaq -0x3b0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x538(%rbp)
jne 0x47a85
jmp 0x48428
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x3b0(%rbp), %rax
movq %rax, -0x550(%rbp)
addq $0x20, %rax
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x558(%rbp)
callq 0x40b20
movq -0x550(%rbp), %rcx
movq -0x558(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x548(%rbp)
jne 0x47ae6
jmp 0x48428
movq -0x20(%rbp), %rsi
leaq -0x3c8(%rbp), %rdi
callq 0x44560
jmp 0x47b2e
movq -0x20(%rbp), %rsi
addq $0x8, %rsi
leaq -0x3d0(%rbp), %rdi
callq 0x44560
jmp 0x47b44
movq -0x20(%rbp), %rsi
addq $0x10, %rsi
leaq -0x3d8(%rbp), %rdi
callq 0x44560
jmp 0x47b5a
movq -0x20(%rbp), %rsi
addq $0x18, %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x44560
jmp 0x47b70
movq -0x20(%rbp), %rsi
addq $0x20, %rsi
leaq -0x3e8(%rbp), %rdi
callq 0x44560
jmp 0x47b86
movq -0x20(%rbp), %rsi
addq $0x28, %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x44560
jmp 0x47b9c
movq -0x20(%rbp), %rsi
addq $0x30, %rsi
leaq -0x3f8(%rbp), %rdi
callq 0x44560
jmp 0x47bb2
movq -0x20(%rbp), %rsi
addq $0x38, %rsi
leaq -0x400(%rbp), %rdi
callq 0x44560
jmp 0x47bc8
movl $0x0, -0x404(%rbp)
movl -0x404(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jae 0x480c1
leaq -0x430(%rbp), %rdi
movq %rdi, -0x438(%rbp)
leaq -0x400(%rbp), %rsi
callq 0x44560
jmp 0x47bfd
movq -0x4b8(%rbp), %rsi
leaq -0x428(%rbp), %rdi
movq %rdi, -0x438(%rbp)
leaq -0x3e8(%rbp), %rdx
callq 0x48850
jmp 0x47c20
leaq -0x420(%rbp), %rdi
movq %rdi, -0x438(%rbp)
leaq -0x3e8(%rbp), %rsi
leaq -0x3f0(%rbp), %rdx
leaq -0x3f8(%rbp), %rcx
callq 0x45230
jmp 0x47c4a
leaq -0x418(%rbp), %rdi
movq %rdi, -0x438(%rbp)
movl -0x404(%rbp), %eax
leaq -0x230(%rbp,%rax,8), %rsi
callq 0x44560
jmp 0x47c6d
movq -0x4c8(%rbp), %rax
leaq -0x410(%rbp), %rdi
movq %rdi, -0x438(%rbp)
movl -0x404(%rbp), %ecx
leaq (%rax,%rcx,8), %rsi
callq 0x44560
jmp 0x47c93
leaq -0x440(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x44740
jmp 0x47ca8
movq -0x4b8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
leaq -0x3c8(%rbp), %rdx
callq 0x489b0
jmp 0x47cc4
leaq -0x458(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
leaq -0x3d8(%rbp), %rcx
callq 0x45310
jmp 0x47ce7
leaq -0x448(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x458(%rbp), %rdx
callq 0x44790
jmp 0x47d03
leaq -0x458(%rbp), %rdi
callq 0x40b20
leaq -0x450(%rbp), %rdi
callq 0x40b20
leaq -0x400(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
movq %rsi, -0x568(%rbp)
callq 0x44530
movq -0x568(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
movq %rsi, -0x560(%rbp)
callq 0x44530
movq -0x560(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x44530
leaq -0x460(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
leaq -0x440(%rbp), %rdx
callq 0x44790
jmp 0x47d7e
leaq -0x3e8(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movq %rsi, -0x580(%rbp)
callq 0x44630
movq -0x580(%rbp), %rdi
callq 0x40b20
leaq -0x3e0(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
movq %rsi, -0x578(%rbp)
callq 0x44530
movq -0x578(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
movq %rsi, -0x570(%rbp)
callq 0x44530
movq -0x570(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x44530
leaq -0x468(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0x448(%rbp), %rdx
callq 0x44790
jmp 0x47e07
leaq -0x3c8(%rbp), %rdi
movq %rdi, -0x588(%rbp)
leaq -0x468(%rbp), %rsi
movq %rsi, -0x590(%rbp)
callq 0x44630
movq -0x590(%rbp), %rdi
callq 0x40b20
movq -0x588(%rbp), %rcx
movq -0x28(%rbp), %rdi
movq -0x370(%rbp), %rdx
shlq $0x4, %rdx
movl -0x404(%rbp), %eax
addq %rax, %rdx
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq 0x1dac6(%rip), %rsi     # 0x65927
callq *%rax
jmp 0x47e65
leaq -0x448(%rbp), %rdi
callq 0x40b20
leaq -0x440(%rbp), %rdi
callq 0x40b20
leaq -0x430(%rbp), %rax
movq %rax, -0x5a0(%rbp)
addq $0x28, %rax
movq %rax, -0x598(%rbp)
movq -0x598(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x5a8(%rbp)
callq 0x40b20
movq -0x5a0(%rbp), %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x598(%rbp)
jne 0x47e96
jmp 0x47ec9
movl -0x404(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x404(%rbp)
jmp 0x47bd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x4841c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x48410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x48404
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x483f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x483ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x483e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x483d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
movq -0x438(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x5b0(%rbp)
je 0x47fdb
movq -0x5b0(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x40b20
movq -0x5b8(%rbp), %rax
leaq -0x430(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x5b0(%rbp)
jne 0x47faa
jmp 0x483c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x48072
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x48066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
jmp 0x4803a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x40b20
leaq -0x450(%rbp), %rdi
callq 0x40b20
jmp 0x48066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x40b20
leaq -0x440(%rbp), %rdi
callq 0x40b20
leaq -0x430(%rbp), %rax
movq %rax, -0x5c8(%rbp)
addq $0x28, %rax
movq %rax, -0x5c0(%rbp)
movq -0x5c0(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x40b20
movq -0x5c8(%rbp), %rcx
movq -0x5d0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5c0(%rbp)
jne 0x4808b
jmp 0x483c8
movq -0x20(%rbp), %rdx
leaq -0x470(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x44790
jmp 0x480da
movq -0x20(%rbp), %rdi
leaq -0x470(%rbp), %rsi
movq %rsi, -0x5d8(%rbp)
callq 0x44630
movq -0x5d8(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x8, %rdx
leaq -0x478(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x44790
jmp 0x4811a
movq -0x20(%rbp), %rdi
addq $0x8, %rdi
leaq -0x478(%rbp), %rsi
movq %rsi, -0x5e0(%rbp)
callq 0x44630
movq -0x5e0(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x10, %rdx
leaq -0x480(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x44790
jmp 0x4815e
movq -0x20(%rbp), %rdi
addq $0x10, %rdi
leaq -0x480(%rbp), %rsi
movq %rsi, -0x5e8(%rbp)
callq 0x44630
movq -0x5e8(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x18, %rdx
leaq -0x488(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x44790
jmp 0x481a2
movq -0x20(%rbp), %rdi
addq $0x18, %rdi
leaq -0x488(%rbp), %rsi
movq %rsi, -0x5f0(%rbp)
callq 0x44630
movq -0x5f0(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x20, %rdx
leaq -0x490(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x44790
jmp 0x481e6
movq -0x20(%rbp), %rdi
addq $0x20, %rdi
leaq -0x490(%rbp), %rsi
movq %rsi, -0x5f8(%rbp)
callq 0x44630
movq -0x5f8(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x28, %rdx
leaq -0x498(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x44790
jmp 0x4822a
movq -0x20(%rbp), %rdi
addq $0x28, %rdi
leaq -0x498(%rbp), %rsi
movq %rsi, -0x600(%rbp)
callq 0x44630
movq -0x600(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x30, %rdx
leaq -0x4a0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x44790
jmp 0x4826e
movq -0x20(%rbp), %rdi
addq $0x30, %rdi
leaq -0x4a0(%rbp), %rsi
movq %rsi, -0x608(%rbp)
callq 0x44630
movq -0x608(%rbp), %rdi
callq 0x40b20
movq -0x20(%rbp), %rdx
addq $0x38, %rdx
leaq -0x4a8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x44790
jmp 0x482b2
movq -0x20(%rbp), %rdi
addq $0x38, %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x44630
leaq -0x4a8(%rbp), %rdi
callq 0x40b20
movq -0x10(%rbp), %rax
addq $0x80, %rax
movq %rax, -0x10(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x40b20
leaq -0x3f8(%rbp), %rdi
callq 0x40b20
leaq -0x3f0(%rbp), %rdi
callq 0x40b20
leaq -0x3e8(%rbp), %rdi
callq 0x40b20
leaq -0x3e0(%rbp), %rdi
callq 0x40b20
leaq -0x3d8(%rbp), %rdi
callq 0x40b20
leaq -0x3d0(%rbp), %rdi
callq 0x40b20
leaq -0x3c8(%rbp), %rdi
callq 0x40b20
movq -0x4d0(%rbp), %rdx
movq -0x4c8(%rbp), %rcx
shlq $0x3, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x610(%rbp)
je 0x48395
movq -0x610(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x618(%rbp)
callq 0x40b20
movq -0x4c8(%rbp), %rcx
movq -0x618(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x610(%rbp)
jne 0x48364
movq -0x378(%rbp), %rax
movq %rax, %rsp
movq -0x370(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x370(%rbp)
jmp 0x47630
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x40b20
leaq -0x3f8(%rbp), %rdi
callq 0x40b20
leaq -0x3f0(%rbp), %rdi
callq 0x40b20
leaq -0x3e8(%rbp), %rdi
callq 0x40b20
leaq -0x3e0(%rbp), %rdi
callq 0x40b20
leaq -0x3d8(%rbp), %rdi
callq 0x40b20
leaq -0x3d0(%rbp), %rdi
callq 0x40b20
leaq -0x3c8(%rbp), %rdi
callq 0x40b20
movq -0x4c8(%rbp), %rcx
movq -0x4d0(%rbp), %rdx
shlq $0x3, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x620(%rbp)
je 0x4847d
movq -0x620(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x628(%rbp)
callq 0x40b20
movq -0x4c8(%rbp), %rcx
movq -0x628(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x620(%rbp)
jne 0x4844c
jmp 0x484e6
movq -0x28(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq 0x1d49b(%rip), %rsi     # 0x65929
callq 0x48b10
jmp 0x48495
leaq -0x230(%rbp), %rax
movq %rax, -0x638(%rbp)
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x630(%rbp)
movq -0x630(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x640(%rbp)
callq 0x40b20
movq -0x638(%rbp), %rcx
movq -0x640(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x630(%rbp)
jne 0x484b0
movq %rbp, %rsp
popq %rbp
retq
leaq -0x230(%rbp), %rax
movq %rax, -0x650(%rbp)
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x648(%rbp)
movq -0x648(%rbp), %rdi
addq $-0x8, %rdi
movq %rdi, -0x658(%rbp)
callq 0x40b20
movq -0x650(%rbp), %rcx
movq -0x658(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x648(%rbp)
jne 0x48501
jmp 0x48534
movq -0x248(%rbp), %rdi
callq 0xd5a0