// File: /workspace/github_c_makefile_star2_O0/SimpleDoger[P]Darknet_CPU_Only/lstm_layer.c
// Function: backward_lstm_layer
void backward_lstm_layer(layer l, network state)
{
    network s = { 0 };
    s.train = state.train;
    int i;
    layer wf = *(l.wf);
    layer wi = *(l.wi);
    layer wg = *(l.wg);
    layer wo = *(l.wo);

    layer uf = *(l.uf);
    layer ui = *(l.ui);
    layer ug = *(l.ug);
    layer uo = *(l.uo);

    increment_layer(&wf, l.steps - 1);
    increment_layer(&wi, l.steps - 1);
    increment_layer(&wg, l.steps - 1);
    increment_layer(&wo, l.steps - 1);

    increment_layer(&uf, l.steps - 1);
    increment_layer(&ui, l.steps - 1);
    increment_layer(&ug, l.steps - 1);
    increment_layer(&uo, l.steps - 1);

    state.input += l.inputs*l.batch*(l.steps - 1);
    if (state.delta) state.delta += l.inputs*l.batch*(l.steps - 1);

    l.output += l.outputs*l.batch*(l.steps - 1);
    l.cell_cpu += l.outputs*l.batch*(l.steps - 1);
    l.delta += l.outputs*l.batch*(l.steps - 1);

    for (i = l.steps - 1; i >= 0; --i) {
        if (i != 0) copy_cpu(l.outputs*l.batch, l.cell_cpu - l.outputs*l.batch, 1, l.prev_cell_cpu, 1);
        copy_cpu(l.outputs*l.batch, l.cell_cpu, 1, l.c_cpu, 1);
        if (i != 0) copy_cpu(l.outputs*l.batch, l.output - l.outputs*l.batch, 1, l.prev_state_cpu, 1);
        copy_cpu(l.outputs*l.batch, l.output, 1, l.h_cpu, 1);

        l.dh_cpu = (i == 0) ? 0 : l.delta - l.outputs*l.batch;

        copy_cpu(l.outputs*l.batch, wf.output, 1, l.f_cpu, 1);			
        axpy_cpu(l.outputs*l.batch, 1, uf.output, 1, l.f_cpu, 1);			

        copy_cpu(l.outputs*l.batch, wi.output, 1, l.i_cpu, 1);			
        axpy_cpu(l.outputs*l.batch, 1, ui.output, 1, l.i_cpu, 1);			

        copy_cpu(l.outputs*l.batch, wg.output, 1, l.g_cpu, 1);			
        axpy_cpu(l.outputs*l.batch, 1, ug.output, 1, l.g_cpu, 1);			

        copy_cpu(l.outputs*l.batch, wo.output, 1, l.o_cpu, 1);			
        axpy_cpu(l.outputs*l.batch, 1, uo.output, 1, l.o_cpu, 1);			

        activate_array(l.f_cpu, l.outputs*l.batch, LOGISTIC);			
        activate_array(l.i_cpu, l.outputs*l.batch, LOGISTIC);		
        activate_array(l.g_cpu, l.outputs*l.batch, TANH);			
        activate_array(l.o_cpu, l.outputs*l.batch, LOGISTIC);		

        copy_cpu(l.outputs*l.batch, l.delta, 1, l.temp3_cpu, 1);		

        copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.temp_cpu, 1);			
        activate_array(l.temp_cpu, l.outputs*l.batch, TANH);			

        copy_cpu(l.outputs*l.batch, l.temp3_cpu, 1, l.temp2_cpu, 1);		
        mul_cpu(l.outputs*l.batch, l.o_cpu, 1, l.temp2_cpu, 1);			

        gradient_array(l.temp_cpu, l.outputs*l.batch, TANH, l.temp2_cpu);
        axpy_cpu(l.outputs*l.batch, 1, l.dc_cpu, 1, l.temp2_cpu, 1);		

        copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.temp_cpu, 1);			
        activate_array(l.temp_cpu, l.outputs*l.batch, TANH);			
        mul_cpu(l.outputs*l.batch, l.temp3_cpu, 1, l.temp_cpu, 1);		
        gradient_array(l.o_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu);
        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wo.delta, 1);
        s.input = l.prev_state_cpu;
        s.delta = l.dh_cpu;															
        backward_connected_layer(wo, s);	

        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, uo.delta, 1);
        s.input = state.input;
        s.delta = state.delta;
        backward_connected_layer(uo, s);									

        copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1);			
        mul_cpu(l.outputs*l.batch, l.i_cpu, 1, l.temp_cpu, 1);				
        gradient_array(l.g_cpu, l.outputs*l.batch, TANH, l.temp_cpu);		
        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wg.delta, 1);
        s.input = l.prev_state_cpu;
        s.delta = l.dh_cpu;														
        backward_connected_layer(wg, s);	

        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, ug.delta, 1);
        s.input = state.input;
        s.delta = state.delta;
        backward_connected_layer(ug, s);																

        copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1);			
        mul_cpu(l.outputs*l.batch, l.g_cpu, 1, l.temp_cpu, 1);				
        gradient_array(l.i_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu);	
        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wi.delta, 1);
        s.input = l.prev_state_cpu;
        s.delta = l.dh_cpu;
        backward_connected_layer(wi, s);						

        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, ui.delta, 1);
        s.input = state.input;
        s.delta = state.delta;
        backward_connected_layer(ui, s);									

        copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1);		
        mul_cpu(l.outputs*l.batch, l.prev_cell_cpu, 1, l.temp_cpu, 1);
        gradient_array(l.f_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu);
        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wf.delta, 1);
        s.input = l.prev_state_cpu;
        s.delta = l.dh_cpu;
        backward_connected_layer(wf, s);						

        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, uf.delta, 1);
        s.input = state.input;
        s.delta = state.delta;
        backward_connected_layer(uf, s);									

        copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1);			
        mul_cpu(l.outputs*l.batch, l.f_cpu, 1, l.temp_cpu, 1);				
        copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, l.dc_cpu, 1);				

        state.input -= l.inputs*l.batch;
        if (state.delta) state.delta -= l.inputs*l.batch;
        l.output -= l.outputs*l.batch;
        l.cell_cpu -= l.outputs*l.batch;
        l.delta -= l.outputs*l.batch;

        increment_layer(&wf, -1);
        increment_layer(&wi, -1);
        increment_layer(&wg, -1);
        increment_layer(&wo, -1);

        increment_layer(&uf, -1);
        increment_layer(&ui, -1);
        increment_layer(&ug, -1);
        increment_layer(&uo, -1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c20, %rsp           # imm = 0x2C20
leaq 0x4b0(%rbp), %rax
movq %rax, -0x2620(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x2628(%rbp)
leaq -0x110(%rbp), %rdi
xorl %esi, %esi
movl $0x110, %edx            # imm = 0x110
callq 0x3190
movq -0x2628(%rbp), %rax
movq -0x2620(%rbp), %rcx
movl 0xf8(%rcx), %ecx
movl %ecx, -0x18(%rbp)
movq 0x468(%rax), %rsi
leaq -0x5b8(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x478(%rax), %rsi
leaq -0xa58(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x488(%rax), %rsi
leaq -0xef8(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x458(%rax), %rsi
leaq -0x1398(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x460(%rax), %rsi
leaq -0x1838(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x470(%rax), %rsi
leaq -0x1cd8(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x480(%rax), %rsi
leaq -0x2178(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movq 0x450(%rax), %rsi
leaq -0x2618(%rbp), %rdi
movl $0x4a0, %edx            # imm = 0x4A0
callq 0x3280
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x5b8(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0xa58(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0xef8(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x1398(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x1838(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x1cd8(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x2178(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rax
movl 0xc0(%rax), %esi
subl $0x1, %esi
leaq -0x2618(%rbp), %rdi
callq 0x50810
movq -0x2628(%rbp), %rcx
movq -0x2620(%rbp), %rax
movl 0x54(%rcx), %edx
imull 0x48(%rcx), %edx
movl 0xc0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %edx
movq 0xd8(%rax), %rcx
movslq %edx, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0xd8(%rax)
cmpq $0x0, 0xe8(%rax)
je 0x50b4b
movq -0x2620(%rbp), %rax
movq -0x2628(%rbp), %rcx
movl 0x54(%rcx), %edx
imull 0x48(%rcx), %edx
movl 0xc0(%rcx), %ecx
subl $0x1, %ecx
imull %ecx, %edx
movq 0xe8(%rax), %rcx
movslq %edx, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0xe8(%rax)
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movl 0xc0(%rax), %ecx
subl $0x1, %ecx
imull %ecx, %edx
movq 0x268(%rax), %rcx
movslq %edx, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x268(%rax)
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movl 0xc0(%rax), %ecx
subl $0x1, %ecx
imull %ecx, %edx
movq 0x350(%rax), %rcx
movslq %edx, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x350(%rax)
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movl 0xc0(%rax), %ecx
subl $0x1, %ecx
imull %ecx, %edx
movq 0x260(%rax), %rcx
movslq %edx, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x260(%rax)
movl 0xc0(%rax), %eax
subl $0x1, %eax
movl %eax, -0x114(%rbp)
cmpl $0x0, -0x114(%rbp)
jl 0x5182d
cmpl $0x0, -0x114(%rbp)
je 0x50c38
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x350(%rax), %rsi
movl 0x58(%rax), %ecx
imull 0x48(%rax), %ecx
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movq 0x348(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x350(%rax), %rsi
movq 0x378(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
cmpl $0x0, -0x114(%rbp)
je 0x50cab
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x268(%rax), %rsi
movl 0x58(%rax), %ecx
imull 0x48(%rax), %ecx
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movq 0x318(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x268(%rax), %rsi
movq 0x310(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
cmpl $0x0, -0x114(%rbp)
jne 0x50ce9
xorl %eax, %eax
movq %rax, -0x2630(%rbp)
jmp 0x50d14
movq -0x2628(%rbp), %rdx
movq 0x260(%rdx), %rax
movl 0x58(%rdx), %ecx
imull 0x48(%rdx), %ecx
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x2630(%rbp)
movq -0x2628(%rbp), %rax
movq -0x2630(%rbp), %rcx
movq %rcx, 0x338(%rax)
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x350(%rbp), %rsi
movq 0x358(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x15d0(%rbp), %rsi
movq 0x358(%rax), %rcx
movss 0x2029c(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f680
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x7f0(%rbp), %rsi
movq 0x360(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x1a70(%rbp), %rsi
movq 0x360(%rax), %rcx
movss 0x20240(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f680
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0xc90(%rbp), %rsi
movq 0x368(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x1f10(%rbp), %rsi
movq 0x368(%rax), %rcx
movss 0x201e4(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f680
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x1130(%rbp), %rsi
movq 0x370(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq -0x23b0(%rbp), %rsi
movq 0x370(%rax), %rcx
movss 0x20188(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f680
movq -0x2628(%rbp), %rax
movq 0x358(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
xorl %edx, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movq 0x360(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
xorl %edx, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movq 0x368(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movl $0x5, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movq 0x370(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
xorl %edx, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x260(%rax), %rsi
movq 0x330(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x378(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x320(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movl $0x5, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x330(%rax), %rsi
movq 0x328(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x370(%rax), %rsi
movq 0x328(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movq 0x320(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movq 0x328(%rax), %rcx
movl $0x5, %edx
callq 0x2e560
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x380(%rax), %rsi
movq 0x328(%rax), %rcx
movss 0x1fff6(%rip), %xmm0    # 0x7100c
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f680
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x378(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x320(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movl $0x5, %edx
callq 0x2dfa0
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x330(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movq 0x370(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movq 0x320(%rax), %rcx
xorl %edx, %edx
callq 0x2e560
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x1138(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x318(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0x338(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2670(%rbp)
movl $0x94, %ecx
leaq -0x1398(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2670(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x23b8(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2620(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0xe8(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2668(%rbp)
movl $0x94, %ecx
leaq -0x2618(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2668(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x328(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x360(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movq 0x368(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movq 0x320(%rax), %rcx
movl $0x5, %edx
callq 0x2e560
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0xc98(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x318(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0x338(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2660(%rbp)
movl $0x94, %ecx
leaq -0xef8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2660(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x1f18(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2620(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0xe8(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2658(%rbp)
movl $0x94, %ecx
leaq -0x2178(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2658(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x328(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x368(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movq 0x360(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movq 0x320(%rax), %rcx
xorl %edx, %edx
callq 0x2e560
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x7f8(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x318(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0x338(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2650(%rbp)
movl $0x94, %ecx
leaq -0xa58(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2650(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x1a78(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2620(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0xe8(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2648(%rbp)
movl $0x94, %ecx
leaq -0x1cd8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2648(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x328(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x348(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movq 0x358(%rax), %rdi
movl 0x58(%rax), %esi
imull 0x48(%rax), %esi
movq 0x320(%rax), %rcx
xorl %edx, %edx
callq 0x2e560
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x358(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movq 0x318(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0x338(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2640(%rbp)
movl $0x94, %ecx
leaq -0x5b8(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2640(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq -0x15d8(%rbp), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2620(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, -0x38(%rbp)
movq 0xe8(%rax), %rax
movq %rax, -0x28(%rbp)
movq %rsp, %rdi
movq %rdi, -0x2638(%rbp)
movl $0x94, %ecx
leaq -0x1838(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x2638(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movl $0x22, %ecx
leaq -0x110(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x3c820
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x328(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x358(%rax), %rsi
movq 0x320(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f5a0
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edi
imull 0x48(%rax), %edi
movq 0x320(%rax), %rsi
movq 0x380(%rax), %rcx
movl $0x1, %r8d
movl %r8d, %edx
callq 0x2f960
movq -0x2628(%rbp), %rcx
movq -0x2620(%rbp), %rax
movl 0x54(%rcx), %edx
imull 0x48(%rcx), %edx
movq 0xd8(%rax), %rcx
movslq %edx, %rsi
xorl %edx, %edx
subq %rsi, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0xd8(%rax)
cmpq $0x0, 0xe8(%rax)
je 0x5171e
movq -0x2620(%rbp), %rax
movq -0x2628(%rbp), %rcx
movl 0x54(%rcx), %edx
imull 0x48(%rcx), %edx
movq 0xe8(%rax), %rcx
movslq %edx, %rsi
xorl %edx, %edx
subq %rsi, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0xe8(%rax)
movq -0x2628(%rbp), %rax
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movq 0x268(%rax), %rcx
movslq %edx, %rsi
xorl %edx, %edx
subq %rsi, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x268(%rax)
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movq 0x350(%rax), %rcx
movslq %edx, %rsi
xorl %edx, %edx
subq %rsi, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x350(%rax)
movl 0x58(%rax), %edx
imull 0x48(%rax), %edx
movq 0x260(%rax), %rcx
movslq %edx, %rsi
xorl %edx, %edx
subq %rsi, %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, 0x260(%rax)
leaq -0x5b8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0xa58(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0xef8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0x1398(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0x1838(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0x1cd8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0x2178(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
leaq -0x2618(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x50810
movl -0x114(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x50be2
addq $0x2c20, %rsp           # imm = 0x2C20
popq %rbp
retq
nopw %cs:(%rax,%rax)