// File: kelwinfc[P]ci4721-Fernandez-Gyomrey/src/AST/to_tac.cpp
// Function: AST_op::to_tac(Tac*)
opd *AST_op::to_tac(Tac* t){
    switch( oper_type ){
        case AND:
            left->to_tac(t);
            t->backpatch(left->truelist, t->next_instruction() );
            
            right->to_tac(t);
            
            falselist.splice(falselist.end(),left->falselist);
            falselist.splice(falselist.end(),right->falselist);
            truelist  = right->truelist;
            break;
            
        case OR:
            left->to_tac(t);
            t->backpatch(left->falselist, t->next_instruction() );
            
            right->to_tac(t);
            
            truelist.splice(truelist.end(),left->truelist);
            truelist.splice(truelist.end(),right->truelist);
            falselist  = right->falselist;
            break;
            
        case IMP:
            left->to_tac(t);
            t->backpatch(left->truelist, t->next_instruction() );

            right->to_tac(t);

            truelist.splice(truelist.end(),left->falselist);
            truelist.splice(truelist.end(),right->truelist);
            falselist  = right->falselist;
            break;

        case CONSEQ:
            right->to_tac(t);
            t->backpatch(right->truelist, t->next_instruction() );

            left->to_tac(t);

            truelist.splice(truelist.end(),right->falselist);
            truelist.splice(truelist.end(),left->truelist);
            falselist  = left->falselist;
            break;
        
        /* Operadores de comparación de igualdad: ==, != */
        case EQ:
            {
                opd* l = left->to_tac(t);

                if (BOOLEAN == left->type) {
                    l = new opd();
                    // almacenar en un temporal el valor booleano de la rama izquierda
                    t->backpatch( left->truelist, t->next_instruction() );
                    t->append_quad(inst::CP, l, new opd(true), 0, "asignación del valor booleano obtenido (true) a rama izquierda de igualdad");
                    t->append_quad(inst::GOTO, 0, 0, new opd(t->next_instruction() + 2, O_LABEL), "salto después de asignar el valor booleano");

                    t->backpatch( left->falselist, t->next_instruction() );
                    t->append_quad(inst::CP, l, new opd(false), 0, "asignación del valor booleano obtenido (false) a rama izquierda de igualdad");
                }
                
                opd* r = right->to_tac(t);

                if (BOOLEAN == right->type) {
                    r = new opd();
                    // almacenar en un temporal el valor booleano de la rama derecha
                    t->backpatch( right->truelist, t->next_instruction() );
                    t->append_quad(inst::CP, r, new opd(true), 0, "asignación del valor booleano obtenido (true) a rama derecha de igualdad");
                    t->append_quad(inst::GOTO, 0, 0, new opd(t->next_instruction() + 2, O_LABEL), "salto después de asignar el valor booleano");

                    t->backpatch( right->falselist, t->next_instruction() );
                    t->append_quad(inst::CP, r, new opd(false), 0, "asignación del valor booleano obtenido (false) a rama derecha de igualdad");
                }

                truelist.push_back( t->next_instruction() );
                t->append_quad(inst::IFEQ, l, r, 0, "comparación de igualdad (true)");
                falselist.push_back( t->next_instruction() );
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de igualdad (false)");
            }
            break;
        case UNEQ:
            {
                opd* l = left->to_tac(t);

                if (BOOLEAN == left->type) {
                    l = new opd();
                    // almacenar en un temporal el valor booleano de la rama izquierda
                    t->backpatch( left->truelist, t->next_instruction() );
                    t->append_quad(inst::CP, l, new opd(true), 0, "asignación del valor booleano obtenido (true) a rama izquierda de desigualdad");
                    t->append_quad(inst::GOTO, 0, 0, new opd(t->next_instruction() + 2, O_LABEL), "salto después de asignar el valor booleano");

                    t->backpatch( left->falselist, t->next_instruction() );
                    t->append_quad(inst::CP, l, new opd(false), 0, "asignación del valor booleano obtenido (false) a rama izquierda de desigualdad");
                }
                
                opd* r = right->to_tac(t);

                if (BOOLEAN == right->type) {
                    r = new opd();
                    // almacenar en un temporal el valor booleano de la rama derecha
                    t->backpatch( right->truelist, t->next_instruction() );
                    t->append_quad(inst::CP, r, new opd(true), 0, "asignación del valor booleano obtenido (true) a rama derecha de desigualdad");
                    t->append_quad(inst::GOTO, 0, 0, new opd(t->next_instruction() + 2, O_LABEL), "salto después de asignar el valor booleano");

                    t->backpatch( right->falselist, t->next_instruction() );
                    t->append_quad(inst::CP, r, new opd(false), 0, "asignación del valor booleano obtenido (false) a rama derecha de desigualdad");
                }
                
                truelist.push_back( t->next_instruction() );
                t->append_quad(inst::IFNEQ, l, r, 0, "comparación de desigualdad (true)");
                falselist.push_back( t->next_instruction() );
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de desigualdad (false)");
            }
            break;
        
        /* Operadores de relación de orden: <, <=, >, >= */
        case LESS:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                truelist.push_back( t->next_instruction() );
                falselist.push_back( t->next_instruction() + 1);
                
                t->append_quad(inst::IFL, l, r, 0, "comparación de menor que (true)");
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de menor que (false)");
            }
            break;
        case LESS_EQ:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                truelist.push_back( t->next_instruction() );
                falselist.push_back( t->next_instruction() + 1);
                
                t->append_quad(inst::IFLEQ, l, r, 0, "comparación de menor o igual (true)");
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de menor o igual (false)");
            }
            break;
        case GREAT:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                truelist.push_back( t->next_instruction() );
                falselist.push_back( t->next_instruction() + 1);
                
                t->append_quad(inst::IFG, l, r, 0, "comparación de mayor (true)");
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de mayor (false)");
            }
            break;
        case GREAT_EQ:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                truelist.push_back( t->next_instruction() );
                falselist.push_back( t->next_instruction() + 1);
                
                t->append_quad(inst::IFGEQ, l, r, 0, "comparación de mayor o igual (true)");
                t->append_quad(inst::GOTO, 0, 0, 0, "comparación de mayor o igual (false)");
            }
            break;
        case PLUS:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                opd* d = new opd();
                t->append_quad(inst::ADD, d, l, r, "operación binaria de suma");
                
                return d;
            }
            break;
        case MINUS:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                opd* d = new opd();
                t->append_quad(inst::SUB, d, l, r, "operación binaria de resta");
                
                return d;
            }
            break;
        case PROD:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                opd* d = new opd();
                t->append_quad(inst::MUL, d, l, r, "operación binaria de producto");
                
                return d;
            }
            break;
        case DIV:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                opd* d = new opd();
                t->append_quad(inst::DIV, d, l, r, "operación binaria de división");
                
                return d;
            }
            break;
        case MOD:
            {
                opd* l = left->to_tac(t);
                opd* r = right->to_tac(t);
                
                opd* d = new opd();
                t->append_quad(inst::MOD, d, l, r, "operación binaria de módulo");
                
                return d;
            }
            break;
        default:
            break;
    }
    return 0;
}

// Assembly:
subq $0xb48, %rsp            # imm = 0xB48
movq %rdi, 0xb38(%rsp)
movq %rsi, 0xb30(%rsp)
movq 0xb38(%rsp), %rax
movq %rax, 0x510(%rsp)
movl 0x68(%rax), %eax
movq %rax, 0x518(%rsp)
subq $0xe, %rax
ja 0x15c0f
movq 0x518(%rsp), %rax
leaq 0x3f591(%rip), %rcx     # 0x521ac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rcx
movq %rcx, 0x4f0(%rsp)
movq 0x58(%rax), %rax
addq $0x18, %rax
movq %rax, 0x4f8(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x4f0(%rsp), %rdi
movq 0x4f8(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x30, %rax
movq %rax, 0x500(%rsp)
addq $0x30, %rdi
callq 0x208a0
movq %rax, 0xb20(%rsp)
leaq 0xb28(%rsp), %rdi
leaq 0xb20(%rsp), %rsi
callq 0x208d0
movq 0x500(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdx
addq $0x30, %rdx
movq 0xb28(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x30, %rax
movq %rax, 0x508(%rsp)
addq $0x30, %rdi
callq 0x208a0
movq %rax, 0xb10(%rsp)
leaq 0xb18(%rsp), %rdi
leaq 0xb10(%rsp), %rsi
callq 0x208d0
movq 0x508(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdx
addq $0x30, %rdx
movq 0xb18(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq 0x60(%rdi), %rsi
addq $0x18, %rsi
addq $0x18, %rdi
callq 0x208f0
jmp 0x15c11
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rcx
movq %rcx, 0x4d0(%rsp)
movq 0x58(%rax), %rax
addq $0x30, %rax
movq %rax, 0x4d8(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x4d0(%rsp), %rdi
movq 0x4d8(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4e0(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xb00(%rsp)
leaq 0xb08(%rsp), %rdi
leaq 0xb00(%rsp), %rsi
callq 0x208d0
movq 0x4e0(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdx
addq $0x18, %rdx
movq 0xb08(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4e8(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xaf0(%rsp)
leaq 0xaf8(%rsp), %rdi
leaq 0xaf0(%rsp), %rsi
callq 0x208d0
movq 0x4e8(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdx
addq $0x18, %rdx
movq 0xaf8(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq 0x60(%rdi), %rsi
addq $0x30, %rsi
addq $0x30, %rdi
callq 0x208f0
jmp 0x15c11
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rcx
movq %rcx, 0x4b0(%rsp)
movq 0x58(%rax), %rax
addq $0x18, %rax
movq %rax, 0x4b8(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x4b0(%rsp), %rdi
movq 0x4b8(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4c0(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xae0(%rsp)
leaq 0xae8(%rsp), %rdi
leaq 0xae0(%rsp), %rsi
callq 0x208d0
movq 0x4c0(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdx
addq $0x30, %rdx
movq 0xae8(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4c8(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xad0(%rsp)
leaq 0xad8(%rsp), %rdi
leaq 0xad0(%rsp), %rsi
callq 0x208d0
movq 0x4c8(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdx
addq $0x18, %rdx
movq 0xad8(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq 0x60(%rdi), %rsi
addq $0x30, %rsi
addq $0x30, %rdi
callq 0x208f0
jmp 0x15c11
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rcx
movq %rcx, 0x490(%rsp)
movq 0x60(%rax), %rax
addq $0x18, %rax
movq %rax, 0x498(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x490(%rsp), %rdi
movq 0x498(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4a0(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xac0(%rsp)
leaq 0xac8(%rsp), %rdi
leaq 0xac0(%rsp), %rsi
callq 0x208d0
movq 0x4a0(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdx
addq $0x30, %rdx
movq 0xac8(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, 0x4a8(%rsp)
addq $0x18, %rdi
callq 0x208a0
movq %rax, 0xab0(%rsp)
leaq 0xab8(%rsp), %rdi
leaq 0xab0(%rsp), %rsi
callq 0x208d0
movq 0x4a8(%rsp), %rdi
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdx
addq $0x18, %rdx
movq 0xab8(%rsp), %rsi
callq 0x20860
movq 0x510(%rsp), %rdi
movq 0x58(%rdi), %rsi
addq $0x30, %rsi
addq $0x30, %rdi
callq 0x208f0
jmp 0x15c11
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0xaa8(%rsp)
movq 0x58(%rax), %rcx
movl $0x6, %eax
cmpl 0x10(%rcx), %eax
jne 0x13673
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x488(%rsp)
callq 0x37ff0
jmp 0x1320a
movq 0x510(%rsp), %rax
movq 0x488(%rsp), %rcx
movq %rcx, 0xaa8(%rsp)
movq 0xb30(%rsp), %rdi
movq %rdi, 0x460(%rsp)
movq 0x58(%rax), %rax
addq $0x18, %rax
movq %rax, 0x468(%rsp)
callq 0x4dfb0
movq 0x460(%rsp), %rdi
movq 0x468(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x470(%rsp)
movq 0xaa8(%rsp), %rax
movq %rax, 0x478(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x480(%rsp)
movl $0x1, %esi
callq 0x38470
jmp 0x132a2
leaq 0xa77(%rsp), %rdi
movq %rdi, 0x458(%rsp)
callq 0x66c0
movq 0x458(%rsp), %rdx
leaq 0x3fceb(%rip), %rsi     # 0x52fb1
leaq 0xa78(%rsp), %rdi
callq 0x7500
jmp 0x132d5
movq 0x480(%rsp), %rcx
movq 0x478(%rsp), %rdx
movq 0x470(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0xa78(%rsp), %r9
callq 0x4de80
jmp 0x13301
leaq 0xa78(%rsp), %rdi
callq 0x6778
leaq 0xa77(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x440(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, 0x448(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movl %eax, 0x454(%rsp)
jmp 0x13353
movq 0x448(%rsp), %rdi
movl 0x454(%rsp), %esi
addl $0x2, %esi
movl $0x6, %edx
callq 0x38010
jmp 0x13371
leaq 0xa4f(%rsp), %rdi
movq %rdi, 0x438(%rsp)
callq 0x66c0
movq 0x438(%rsp), %rdx
leaq 0x3fc68(%rip), %rsi     # 0x52ffd
leaq 0xa50(%rsp), %rdi
callq 0x7500
jmp 0x133a4
movq 0x448(%rsp), %r8
movq 0x440(%rsp), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x16, %esi
leaq 0xa50(%rsp), %r9
movq %rcx, %rdx
callq 0x4de80
jmp 0x133cf
leaq 0xa50(%rsp), %rdi
callq 0x6778
leaq 0xa4f(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rdi
movq %rdi, 0x410(%rsp)
movq 0x58(%rax), %rax
addq $0x30, %rax
movq %rax, 0x418(%rsp)
callq 0x4dfb0
movq 0x410(%rsp), %rdi
movq 0x418(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x420(%rsp)
movq 0xaa8(%rsp), %rax
movq %rax, 0x428(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x430(%rsp)
xorl %esi, %esi
callq 0x38470
jmp 0x1346e
leaq 0xa27(%rsp), %rdi
movq %rdi, 0x408(%rsp)
callq 0x66c0
movq 0x408(%rsp), %rdx
leaq 0x3fb97(%rip), %rsi     # 0x53029
leaq 0xa28(%rsp), %rdi
callq 0x7500
jmp 0x134a1
movq 0x430(%rsp), %rcx
movq 0x428(%rsp), %rdx
movq 0x420(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0xa28(%rsp), %r9
callq 0x4de80
jmp 0x134cd
leaq 0xa28(%rsp), %rdi
callq 0x6778
leaq 0xa27(%rsp), %rdi
callq 0x6400
jmp 0x13673
movq 0x488(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq 0x480(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13579
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0xa78(%rsp), %rdi
callq 0x6778
leaq 0xa77(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x448(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x135ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0xa50(%rsp), %rdi
callq 0x6778
leaq 0xa4f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x430(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13661
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0xa28(%rsp), %rdi
callq 0x6778
leaq 0xa27(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0xa18(%rsp)
movq 0x60(%rax), %rcx
movl $0x6, %eax
cmpl 0x10(%rcx), %eax
jne 0x13b3a
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x400(%rsp)
callq 0x37ff0
jmp 0x136d1
movq 0x510(%rsp), %rax
movq 0x400(%rsp), %rcx
movq %rcx, 0xa18(%rsp)
movq 0xb30(%rsp), %rdi
movq %rdi, 0x3d8(%rsp)
movq 0x60(%rax), %rax
addq $0x18, %rax
movq %rax, 0x3e0(%rsp)
callq 0x4dfb0
movq 0x3d8(%rsp), %rdi
movq 0x3e0(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x3e8(%rsp)
movq 0xa18(%rsp), %rax
movq %rax, 0x3f0(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x3f8(%rsp)
movl $0x1, %esi
callq 0x38470
jmp 0x13769
leaq 0x9f7(%rsp), %rdi
movq %rdi, 0x3d0(%rsp)
callq 0x66c0
movq 0x3d0(%rsp), %rdx
leaq 0x3f8e9(%rip), %rsi     # 0x53076
leaq 0x9f8(%rsp), %rdi
callq 0x7500
jmp 0x1379c
movq 0x3f8(%rsp), %rcx
movq 0x3f0(%rsp), %rdx
movq 0x3e8(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x9f8(%rsp), %r9
callq 0x4de80
jmp 0x137c8
leaq 0x9f8(%rsp), %rdi
callq 0x6778
leaq 0x9f7(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x3b8(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, 0x3c0(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movl %eax, 0x3cc(%rsp)
jmp 0x1381a
movq 0x3c0(%rsp), %rdi
movl 0x3cc(%rsp), %esi
addl $0x2, %esi
movl $0x6, %edx
callq 0x38010
jmp 0x13838
leaq 0x9cf(%rsp), %rdi
movq %rdi, 0x3b0(%rsp)
callq 0x66c0
movq 0x3b0(%rsp), %rdx
leaq 0x3f7a1(%rip), %rsi     # 0x52ffd
leaq 0x9d0(%rsp), %rdi
callq 0x7500
jmp 0x1386b
movq 0x3c0(%rsp), %r8
movq 0x3b8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x16, %esi
leaq 0x9d0(%rsp), %r9
movq %rcx, %rdx
callq 0x4de80
jmp 0x13896
leaq 0x9d0(%rsp), %rdi
callq 0x6778
leaq 0x9cf(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rdi
movq %rdi, 0x388(%rsp)
movq 0x60(%rax), %rax
addq $0x30, %rax
movq %rax, 0x390(%rsp)
callq 0x4dfb0
movq 0x388(%rsp), %rdi
movq 0x390(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x398(%rsp)
movq 0xa18(%rsp), %rax
movq %rax, 0x3a0(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x3a8(%rsp)
xorl %esi, %esi
callq 0x38470
jmp 0x13935
leaq 0x9a7(%rsp), %rdi
movq %rdi, 0x380(%rsp)
callq 0x66c0
movq 0x380(%rsp), %rdx
leaq 0x3f767(%rip), %rsi     # 0x530c0
leaq 0x9a8(%rsp), %rdi
callq 0x7500
jmp 0x13968
movq 0x3a8(%rsp), %rcx
movq 0x3a0(%rsp), %rdx
movq 0x398(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x9a8(%rsp), %r9
callq 0x4de80
jmp 0x13994
leaq 0x9a8(%rsp), %rdi
callq 0x6778
leaq 0x9a7(%rsp), %rdi
callq 0x6400
jmp 0x13b3a
movq 0x400(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq 0x3f8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13a40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x9f8(%rsp), %rdi
callq 0x6778
leaq 0x9f7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x3c0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13ab4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x9d0(%rsp), %rdi
callq 0x6778
leaq 0x9cf(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x3a8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x9a8(%rsp), %rdi
callq 0x6778
leaq 0x9a7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x358(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x358(%rsp), %rdi
movl %eax, 0x9a0(%rsp)
leaq 0x9a0(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x360(%rsp)
movq 0xaa8(%rsp), %rax
movq %rax, 0x368(%rsp)
movq 0xa18(%rsp), %rax
movq %rax, 0x370(%rsp)
leaq 0x97f(%rsp), %rdi
movq %rdi, 0x378(%rsp)
callq 0x66c0
movq 0x378(%rsp), %rdx
leaq 0x3f540(%rip), %rsi     # 0x5310b
leaq 0x980(%rsp), %rdi
callq 0x7500
jmp 0x13bda
movq 0x370(%rsp), %rcx
movq 0x368(%rsp), %rdx
movq 0x360(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x18, %esi
leaq 0x980(%rsp), %r9
callq 0x4de80
jmp 0x13c0b
leaq 0x980(%rsp), %rdi
callq 0x6778
leaq 0x97f(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x340(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x340(%rsp), %rdi
movl %eax, 0x978(%rsp)
leaq 0x978(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x348(%rsp)
leaq 0x957(%rsp), %rdi
movq %rdi, 0x350(%rsp)
callq 0x66c0
movq 0x350(%rsp), %rdx
leaq 0x3f495(%rip), %rsi     # 0x5312b
leaq 0x958(%rsp), %rdi
callq 0x7500
jmp 0x13ca5
movq 0x348(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x958(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x13ccc
leaq 0x958(%rsp), %rdi
callq 0x6778
leaq 0x957(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13d22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x980(%rsp), %rdi
callq 0x6778
leaq 0x97f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x13d6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x958(%rsp), %rdi
callq 0x6778
leaq 0x957(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x948(%rsp)
movq 0x58(%rax), %rcx
movl $0x6, %eax
cmpl 0x10(%rcx), %eax
jne 0x14244
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x338(%rsp)
callq 0x37ff0
jmp 0x13ddb
movq 0x510(%rsp), %rax
movq 0x338(%rsp), %rcx
movq %rcx, 0x948(%rsp)
movq 0xb30(%rsp), %rdi
movq %rdi, 0x310(%rsp)
movq 0x58(%rax), %rax
addq $0x18, %rax
movq %rax, 0x318(%rsp)
callq 0x4dfb0
movq 0x310(%rsp), %rdi
movq 0x318(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x320(%rsp)
movq 0x948(%rsp), %rax
movq %rax, 0x328(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x330(%rsp)
movl $0x1, %esi
callq 0x38470
jmp 0x13e73
leaq 0x927(%rsp), %rdi
movq %rdi, 0x308(%rsp)
callq 0x66c0
movq 0x308(%rsp), %rdx
leaq 0x3f2b5(%rip), %rsi     # 0x5314c
leaq 0x928(%rsp), %rdi
callq 0x7500
jmp 0x13ea6
movq 0x330(%rsp), %rcx
movq 0x328(%rsp), %rdx
movq 0x320(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x928(%rsp), %r9
callq 0x4de80
jmp 0x13ed2
leaq 0x928(%rsp), %rdi
callq 0x6778
leaq 0x927(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, 0x2f8(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movl %eax, 0x304(%rsp)
jmp 0x13f24
movq 0x2f8(%rsp), %rdi
movl 0x304(%rsp), %esi
addl $0x2, %esi
movl $0x6, %edx
callq 0x38010
jmp 0x13f42
leaq 0x8ff(%rsp), %rdi
movq %rdi, 0x2e8(%rsp)
callq 0x66c0
movq 0x2e8(%rsp), %rdx
leaq 0x3f097(%rip), %rsi     # 0x52ffd
leaq 0x900(%rsp), %rdi
callq 0x7500
jmp 0x13f75
movq 0x2f8(%rsp), %r8
movq 0x2f0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x16, %esi
leaq 0x900(%rsp), %r9
movq %rcx, %rdx
callq 0x4de80
jmp 0x13fa0
leaq 0x900(%rsp), %rdi
callq 0x6778
leaq 0x8ff(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rdi
movq %rdi, 0x2c0(%rsp)
movq 0x58(%rax), %rax
addq $0x30, %rax
movq %rax, 0x2c8(%rsp)
callq 0x4dfb0
movq 0x2c0(%rsp), %rdi
movq 0x2c8(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x2d0(%rsp)
movq 0x948(%rsp), %rax
movq %rax, 0x2d8(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x2e0(%rsp)
xorl %esi, %esi
callq 0x38470
jmp 0x1403f
leaq 0x8d7(%rsp), %rdi
movq %rdi, 0x2b8(%rsp)
callq 0x66c0
movq 0x2b8(%rsp), %rdx
leaq 0x3f138(%rip), %rsi     # 0x5319b
leaq 0x8d8(%rsp), %rdi
callq 0x7500
jmp 0x14072
movq 0x2e0(%rsp), %rcx
movq 0x2d8(%rsp), %rdx
movq 0x2d0(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x8d8(%rsp), %r9
callq 0x4de80
jmp 0x1409e
leaq 0x8d8(%rsp), %rdi
callq 0x6778
leaq 0x8d7(%rsp), %rdi
callq 0x6400
jmp 0x14244
movq 0x338(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq 0x330(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x1414a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x928(%rsp), %rdi
callq 0x6778
leaq 0x927(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x2f8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x141be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x6778
leaq 0x8ff(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x2e0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14232
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x8d8(%rsp), %rdi
callq 0x6778
leaq 0x8d7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x8c8(%rsp)
movq 0x60(%rax), %rcx
movl $0x6, %eax
cmpl 0x10(%rcx), %eax
jne 0x1470b
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x2b0(%rsp)
callq 0x37ff0
jmp 0x142a2
movq 0x510(%rsp), %rax
movq 0x2b0(%rsp), %rcx
movq %rcx, 0x8c8(%rsp)
movq 0xb30(%rsp), %rdi
movq %rdi, 0x288(%rsp)
movq 0x60(%rax), %rax
addq $0x18, %rax
movq %rax, 0x290(%rsp)
callq 0x4dfb0
movq 0x288(%rsp), %rdi
movq 0x290(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x298(%rsp)
movq 0x8c8(%rsp), %rax
movq %rax, 0x2a0(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x2a8(%rsp)
movl $0x1, %esi
callq 0x38470
jmp 0x1433a
leaq 0x8a7(%rsp), %rdi
movq %rdi, 0x280(%rsp)
callq 0x66c0
movq 0x280(%rsp), %rdx
leaq 0x3ee8d(%rip), %rsi     # 0x531eb
leaq 0x8a8(%rsp), %rdi
callq 0x7500
jmp 0x1436d
movq 0x2a8(%rsp), %rcx
movq 0x2a0(%rsp), %rdx
movq 0x298(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x8a8(%rsp), %r9
callq 0x4de80
jmp 0x14399
leaq 0x8a8(%rsp), %rdi
callq 0x6778
leaq 0x8a7(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x268(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, 0x270(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movl %eax, 0x27c(%rsp)
jmp 0x143eb
movq 0x270(%rsp), %rdi
movl 0x27c(%rsp), %esi
addl $0x2, %esi
movl $0x6, %edx
callq 0x38010
jmp 0x14409
leaq 0x87f(%rsp), %rdi
movq %rdi, 0x260(%rsp)
callq 0x66c0
movq 0x260(%rsp), %rdx
leaq 0x3ebd0(%rip), %rsi     # 0x52ffd
leaq 0x880(%rsp), %rdi
callq 0x7500
jmp 0x1443c
movq 0x270(%rsp), %r8
movq 0x268(%rsp), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x16, %esi
leaq 0x880(%rsp), %r9
movq %rcx, %rdx
callq 0x4de80
jmp 0x14467
leaq 0x880(%rsp), %rdi
callq 0x6778
leaq 0x87f(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
movq 0xb30(%rsp), %rdi
movq %rdi, 0x238(%rsp)
movq 0x60(%rax), %rax
addq $0x30, %rax
movq %rax, 0x240(%rsp)
callq 0x4dfb0
movq 0x238(%rsp), %rdi
movq 0x240(%rsp), %rsi
movl %eax, %edx
callq 0x4dfc0
movq 0xb30(%rsp), %rax
movq %rax, 0x248(%rsp)
movq 0x8c8(%rsp), %rax
movq %rax, 0x250(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x258(%rsp)
xorl %esi, %esi
callq 0x38470
jmp 0x14506
leaq 0x857(%rsp), %rdi
movq %rdi, 0x230(%rsp)
callq 0x66c0
movq 0x230(%rsp), %rdx
leaq 0x3ed0e(%rip), %rsi     # 0x53238
leaq 0x858(%rsp), %rdi
callq 0x7500
jmp 0x14539
movq 0x258(%rsp), %rcx
movq 0x250(%rsp), %rdx
movq 0x248(%rsp), %rdi
xorl %esi, %esi
movl %esi, %r8d
leaq 0x858(%rsp), %r9
callq 0x4de80
jmp 0x14565
leaq 0x858(%rsp), %rdi
callq 0x6778
leaq 0x857(%rsp), %rdi
callq 0x6400
jmp 0x1470b
movq 0x2b0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq 0x2a8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14611
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x8a8(%rsp), %rdi
callq 0x6778
leaq 0x8a7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x270(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14685
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x880(%rsp), %rdi
callq 0x6778
leaq 0x87f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x258(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x146f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x858(%rsp), %rdi
callq 0x6778
leaq 0x857(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x208(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x208(%rsp), %rdi
movl %eax, 0x850(%rsp)
leaq 0x850(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x210(%rsp)
movq 0x948(%rsp), %rax
movq %rax, 0x218(%rsp)
movq 0x8c8(%rsp), %rax
movq %rax, 0x220(%rsp)
leaq 0x82f(%rsp), %rdi
movq %rdi, 0x228(%rsp)
callq 0x66c0
movq 0x228(%rsp), %rdx
leaq 0x3eaea(%rip), %rsi     # 0x53286
leaq 0x830(%rsp), %rdi
callq 0x7500
jmp 0x147ab
movq 0x220(%rsp), %rcx
movq 0x218(%rsp), %rdx
movq 0x210(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x19, %esi
leaq 0x830(%rsp), %r9
callq 0x4de80
jmp 0x147dc
leaq 0x830(%rsp), %rdi
callq 0x6778
leaq 0x82f(%rsp), %rdi
callq 0x6400
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x1f0(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x1f0(%rsp), %rdi
movl %eax, 0x828(%rsp)
leaq 0x828(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x1f8(%rsp)
leaq 0x807(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0x66c0
movq 0x200(%rsp), %rdx
leaq 0x3ea42(%rip), %rsi     # 0x532a9
leaq 0x808(%rsp), %rdi
callq 0x7500
jmp 0x14876
movq 0x1f8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x808(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x1489d
leaq 0x808(%rsp), %rdi
callq 0x6778
leaq 0x807(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x148f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x830(%rsp), %rdi
callq 0x6778
leaq 0x82f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x1493c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x808(%rsp), %rdi
callq 0x6778
leaq 0x807(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x7f8(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x7f0(%rsp)
addq $0x18, %rax
movq %rax, 0x1c0(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x1c0(%rsp), %rdi
movl %eax, 0x7ec(%rsp)
leaq 0x7ec(%rsp), %rsi
callq 0x20950
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x1c8(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x1c8(%rsp), %rdi
incl %eax
movl %eax, 0x7e8(%rsp)
leaq 0x7e8(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x7f8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0x7f0(%rsp), %rax
movq %rax, 0x1e0(%rsp)
leaq 0x7c7(%rsp), %rdi
movq %rdi, 0x1e8(%rsp)
callq 0x66c0
movq 0x1e8(%rsp), %rdx
leaq 0x3e85f(%rip), %rsi     # 0x532cd
leaq 0x7c8(%rsp), %rdi
callq 0x7500
jmp 0x14a7d
movq 0x1e0(%rsp), %rcx
movq 0x1d8(%rsp), %rdx
movq 0x1d0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x1a, %esi
leaq 0x7c8(%rsp), %r9
callq 0x4de80
jmp 0x14aae
leaq 0x7c8(%rsp), %rdi
callq 0x6778
leaq 0x7c7(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x1b0(%rsp)
leaq 0x79f(%rsp), %rdi
movq %rdi, 0x1b8(%rsp)
callq 0x66c0
movq 0x1b8(%rsp), %rdx
leaq 0x3e7f2(%rip), %rsi     # 0x532ee
leaq 0x7a0(%rsp), %rdi
callq 0x7500
jmp 0x14b0b
movq 0x1b0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x7a0(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x14b32
leaq 0x7a0(%rsp), %rdi
callq 0x6778
leaq 0x79f(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14b88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x7c8(%rsp), %rdi
callq 0x6778
leaq 0x7c7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14bd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x7a0(%rsp), %rdi
callq 0x6778
leaq 0x79f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x790(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x788(%rsp)
addq $0x18, %rax
movq %rax, 0x180(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x180(%rsp), %rdi
movl %eax, 0x784(%rsp)
leaq 0x784(%rsp), %rsi
callq 0x20950
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x188(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x188(%rsp), %rdi
incl %eax
movl %eax, 0x780(%rsp)
leaq 0x780(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x190(%rsp)
movq 0x790(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x788(%rsp), %rax
movq %rax, 0x1a0(%rsp)
leaq 0x75f(%rsp), %rdi
movq %rdi, 0x1a8(%rsp)
callq 0x66c0
movq 0x1a8(%rsp), %rdx
leaq 0x3e60d(%rip), %rsi     # 0x53310
leaq 0x760(%rsp), %rdi
callq 0x7500
jmp 0x14d12
movq 0x1a0(%rsp), %rcx
movq 0x198(%rsp), %rdx
movq 0x190(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x1b, %esi
leaq 0x760(%rsp), %r9
callq 0x4de80
jmp 0x14d43
leaq 0x760(%rsp), %rdi
callq 0x6778
leaq 0x75f(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x170(%rsp)
leaq 0x737(%rsp), %rdi
movq %rdi, 0x178(%rsp)
callq 0x66c0
movq 0x178(%rsp), %rdx
leaq 0x3e5a4(%rip), %rsi     # 0x53335
leaq 0x738(%rsp), %rdi
callq 0x7500
jmp 0x14da0
movq 0x170(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x738(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x14dc7
leaq 0x738(%rsp), %rdi
callq 0x6778
leaq 0x737(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14e1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x760(%rsp), %rdi
callq 0x6778
leaq 0x75f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x14e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x738(%rsp), %rdi
callq 0x6778
leaq 0x737(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x728(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x720(%rsp)
addq $0x18, %rax
movq %rax, 0x140(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x140(%rsp), %rdi
movl %eax, 0x71c(%rsp)
leaq 0x71c(%rsp), %rsi
callq 0x20950
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x148(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x148(%rsp), %rdi
incl %eax
movl %eax, 0x718(%rsp)
leaq 0x718(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0x728(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x720(%rsp), %rax
movq %rax, 0x160(%rsp)
leaq 0x6f7(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0x66c0
movq 0x168(%rsp), %rdx
leaq 0x3e3c3(%rip), %rsi     # 0x5335b
leaq 0x6f8(%rsp), %rdi
callq 0x7500
jmp 0x14fa7
movq 0x160(%rsp), %rcx
movq 0x158(%rsp), %rdx
movq 0x150(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x1c, %esi
leaq 0x6f8(%rsp), %r9
callq 0x4de80
jmp 0x14fd8
leaq 0x6f8(%rsp), %rdi
callq 0x6778
leaq 0x6f7(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0x130(%rsp)
leaq 0x6cf(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x66c0
movq 0x138(%rsp), %rdx
leaq 0x3e352(%rip), %rsi     # 0x53378
leaq 0x6d0(%rsp), %rdi
callq 0x7500
jmp 0x15035
movq 0x130(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x6d0(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x1505c
leaq 0x6d0(%rsp), %rdi
callq 0x6778
leaq 0x6cf(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x150b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x6f8(%rsp), %rdi
callq 0x6778
leaq 0x6f7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x150fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x6778
leaq 0x6cf(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x6c0(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x6b8(%rsp)
addq $0x18, %rax
movq %rax, 0x100(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x100(%rsp), %rdi
movl %eax, 0x6b4(%rsp)
leaq 0x6b4(%rsp), %rsi
callq 0x20950
movq 0x510(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x108(%rsp)
movq 0xb30(%rsp), %rdi
callq 0x4dfb0
movq 0x108(%rsp), %rdi
incl %eax
movl %eax, 0x6b0(%rsp)
leaq 0x6b0(%rsp), %rsi
callq 0x20950
movq 0xb30(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x6c0(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x6b8(%rsp), %rax
movq %rax, 0x120(%rsp)
leaq 0x68f(%rsp), %rdi
movq %rdi, 0x128(%rsp)
callq 0x66c0
movq 0x128(%rsp), %rdx
leaq 0x3e169(%rip), %rsi     # 0x53396
leaq 0x690(%rsp), %rdi
callq 0x7500
jmp 0x1523c
movq 0x120(%rsp), %rcx
movq 0x118(%rsp), %rdx
movq 0x110(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x1d, %esi
leaq 0x690(%rsp), %r9
callq 0x4de80
jmp 0x1526d
leaq 0x690(%rsp), %rdi
callq 0x6778
leaq 0x68f(%rsp), %rdi
callq 0x6400
movq 0xb30(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0x667(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x66c0
movq 0xf8(%rsp), %rdx
leaq 0x3e100(%rip), %rsi     # 0x533bb
leaq 0x668(%rsp), %rdi
callq 0x7500
jmp 0x152ca
movq 0xf0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %r8d
movl $0x16, %esi
leaq 0x668(%rsp), %r9
movq %r8, %rdx
movq %r8, %rcx
callq 0x4de80
jmp 0x152f1
leaq 0x668(%rsp), %rdi
callq 0x6778
leaq 0x667(%rsp), %rdi
callq 0x6400
jmp 0x15c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x15347
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x6778
leaq 0x68f(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x15390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x668(%rsp), %rdi
callq 0x6778
leaq 0x667(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x658(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, 0x650(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0xe8(%rsp)
callq 0x37ff0
jmp 0x1540e
movq 0xe8(%rsp), %rax
movq %rax, 0x648(%rsp)
movq 0xb30(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x648(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x658(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x650(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x627(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x66c0
movq 0xe0(%rsp), %rdx
leaq 0x3df5f(%rip), %rsi     # 0x533e1
leaq 0x628(%rsp), %rdi
callq 0x7500
jmp 0x15491
movq 0xd8(%rsp), %r8
movq 0xd0(%rsp), %rcx
movq 0xc8(%rsp), %rdx
movq 0xc0(%rsp), %rdi
movl $0x11, %esi
leaq 0x628(%rsp), %r9
callq 0x4de80
jmp 0x154c5
leaq 0x628(%rsp), %rdi
callq 0x6778
leaq 0x627(%rsp), %rdi
callq 0x6400
movq 0x648(%rsp), %rax
movq %rax, 0xb40(%rsp)
jmp 0x15c1d
movq 0xe8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x15556
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x628(%rsp), %rdi
callq 0x6778
leaq 0x627(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x618(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, 0x610(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0xb8(%rsp)
callq 0x37ff0
jmp 0x155d4
movq 0xb8(%rsp), %rax
movq %rax, 0x608(%rsp)
movq 0xb30(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x608(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x618(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x610(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x5e7(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x66c0
movq 0xb0(%rsp), %rdx
leaq 0x3ddb4(%rip), %rsi     # 0x533fc
leaq 0x5e8(%rsp), %rdi
callq 0x7500
jmp 0x15657
movq 0xa8(%rsp), %r8
movq 0xa0(%rsp), %rcx
movq 0x98(%rsp), %rdx
movq 0x90(%rsp), %rdi
movl $0x12, %esi
leaq 0x5e8(%rsp), %r9
callq 0x4de80
jmp 0x1568b
leaq 0x5e8(%rsp), %rdi
callq 0x6778
leaq 0x5e7(%rsp), %rdi
callq 0x6400
movq 0x608(%rsp), %rax
movq %rax, 0xb40(%rsp)
jmp 0x15c1d
movq 0xb8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x1571c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x5e8(%rsp), %rdi
callq 0x6778
leaq 0x5e7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x5d8(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, 0x5d0(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x88(%rsp)
callq 0x37ff0
jmp 0x1579a
movq 0x88(%rsp), %rax
movq %rax, 0x5c8(%rsp)
movq 0xb30(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x5c8(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x5d8(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x5d0(%rsp), %rax
movq %rax, 0x78(%rsp)
leaq 0x5a7(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x66c0
movq 0x80(%rsp), %rdx
leaq 0x3dc16(%rip), %rsi     # 0x53418
leaq 0x5a8(%rsp), %rdi
callq 0x7500
jmp 0x15811
movq 0x78(%rsp), %r8
movq 0x70(%rsp), %rcx
movq 0x68(%rsp), %rdx
movq 0x60(%rsp), %rdi
movl $0x13, %esi
leaq 0x5a8(%rsp), %r9
callq 0x4de80
jmp 0x15839
leaq 0x5a8(%rsp), %rdi
callq 0x6778
leaq 0x5a7(%rsp), %rdi
callq 0x6400
movq 0x5c8(%rsp), %rax
movq %rax, 0xb40(%rsp)
jmp 0x15c1d
movq 0x88(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x158ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x5a8(%rsp), %rdi
callq 0x6778
leaq 0x5a7(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x598(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, 0x590(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x58(%rsp)
callq 0x37ff0
jmp 0x15945
movq 0x58(%rsp), %rax
movq %rax, 0x588(%rsp)
movq 0xb30(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x588(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x598(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x590(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x567(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x66c0
movq 0x50(%rsp), %rdx
leaq 0x3da93(%rip), %rsi     # 0x53437
leaq 0x568(%rsp), %rdi
callq 0x7500
jmp 0x159b3
movq 0x48(%rsp), %r8
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %rdx
movq 0x30(%rsp), %rdi
movl $0x14, %esi
leaq 0x568(%rsp), %r9
callq 0x4de80
jmp 0x159db
leaq 0x568(%rsp), %rdi
callq 0x6778
leaq 0x567(%rsp), %rdi
callq 0x6400
movq 0x588(%rsp), %rax
movq %rax, 0xb40(%rsp)
jmp 0x15c1d
movq 0x58(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x15a69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x568(%rsp), %rdi
callq 0x6778
leaq 0x567(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
movq 0x510(%rsp), %rax
movq 0x58(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, %rcx
movq 0x510(%rsp), %rax
movq %rcx, 0x558(%rsp)
movq 0x60(%rax), %rdi
movq 0xb30(%rsp), %rsi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movq %rax, 0x550(%rsp)
movl $0x18, %edi
callq 0x6390
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
callq 0x37ff0
jmp 0x15ae4
movq 0x28(%rsp), %rax
movq %rax, 0x548(%rsp)
movq 0xb30(%rsp), %rax
movq %rax, (%rsp)
movq 0x548(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x558(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x550(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x527(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x66c0
movq 0x20(%rsp), %rdx
leaq 0x3d915(%rip), %rsi     # 0x53457
leaq 0x528(%rsp), %rdi
callq 0x7500
jmp 0x15b51
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rdx
movq (%rsp), %rdi
movl $0x7, %esi
leaq 0x528(%rsp), %r9
callq 0x4de80
jmp 0x15b78
leaq 0x528(%rsp), %rdi
callq 0x6778
leaq 0x527(%rsp), %rdi
callq 0x6400
movq 0x548(%rsp), %rax
movq %rax, 0xb40(%rsp)
jmp 0x15c1d
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
movl $0x18, %esi
callq 0x63a0
jmp 0x15c2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
jmp 0x15c00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xaa0(%rsp)
movl %eax, 0xa9c(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x6778
leaq 0x527(%rsp), %rdi
callq 0x6400
jmp 0x15c2d
jmp 0x15c11
movq $0x0, 0xb40(%rsp)
movq 0xb40(%rsp), %rax
addq $0xb48, %rsp            # imm = 0xB48
retq
movq 0xaa0(%rsp), %rdi
callq 0x66b0
nopw (%rax,%rax)