// File: sighingnow[P]compile-pascal/pl0_tac_gen.cpp
// Function: pl0_tac_assign_stmt(pl0_ast_assign_stmt const*)
void pl0_tac_assign_stmt(pl0_ast_assign_stmt const *stmt) {
    variable var;
    Value *val = pl0_tac_expr(stmt->val).first;
    if (stmt->idx == nullptr && functb.depth(stmt->id->id) > vartb.depth(stmt->id->id)) {
        // set function's retval
        func f;
        if (functb.find(stmt->id->id, true, f) == false) {
            pl0_ast_error(stmt->id->loc, string("use of undeclared function ") + "\"" + stmt->id->id + "\"");
        }
        irb.emit("=", new Value(f.name, f.rettype), val);
    }
    else {
        // just simple assign.
        if (stmt->id->id.front() == '^') {
            pl0_ast_error(stmt->id->loc, string("illegal assign to loop variable"));
        }
        if (vartb.find(stmt->id->id, true, var) == false) {
            pl0_ast_error(stmt->id->loc, string("use of undeclared identifier ") + "\"" + stmt->id->id + "\"");
        }
        // assign to array element.
        if (stmt->idx) {
            if (var.len == -1) {
                pl0_ast_error(stmt->id->loc, string("treat ordinary variable ") + "\"" + stmt->id->id + "\" as an array");
            }
            Value *idx = pl0_tac_expr(stmt->idx).first;
            irb.emit("[]=", new Value(stmt->id->id, var.dt), idx, val);
        }
        // assign to variable.
        else {
            if (var.len != -1) {
                pl0_ast_error(stmt->id->loc, string("expected an non-array identifier ") + "\"" + stmt->id->id + "\"");
            }
            irb.emit("=", new Value(stmt->id->id, var.dt), val);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x580, %rsp            # imm = 0x580
movq %rdi, -0x8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xbf1b0
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
leaq -0xa0(%rbp), %rdi
callq 0xba600
jmp 0xb26ee
movq -0xa0(%rbp), %rax
movq %rax, -0x500(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0xbf290
movq -0x500(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xb2b45
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq 0xae073(%rip), %rdi     # 0x1607a8
callq 0xbf2b0
movl %eax, -0x504(%rbp)
jmp 0xb2742
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq 0xadfc3(%rip), %rdi     # 0x160718
callq 0xbf460
movl %eax, -0x508(%rbp)
jmp 0xb2762
movl -0x504(%rbp), %eax
movl -0x508(%rbp), %ecx
cmpl %ecx, %eax
jle 0xb2b45
leaq -0x108(%rbp), %rdi
callq 0xbf610
jmp 0xb2784
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq 0xae011(%rip), %rdi     # 0x1607a8
movl $0x1, %edx
leaq -0x108(%rbp), %rcx
callq 0xbf6e0
movb %al, -0x509(%rbp)
jmp 0xb27b0
movb -0x509(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xb2985
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x110(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x55d0
movq -0x518(%rbp), %rdx
leaq 0x3e930(%rip), %rsi     # 0xf1127
leaq -0x190(%rbp), %rdi
callq 0x19840
jmp 0xb2805
leaq 0x3ef0f(%rip), %rdx     # 0xf171b
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x1a380
jmp 0xb2821
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
addq $0x8, %rdx
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x1a4d0
jmp 0xb2842
leaq 0x3eed2(%rip), %rdx     # 0xf171b
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x1a380
jmp 0xb285e
movq -0x110(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xae910
jmp 0xb2873
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x150(%rbp), %rdi
callq 0x5200
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x191(%rbp), %rdi
callq 0x53c0
jmp 0xb2985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb34d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2b34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2968
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb295c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2950
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x5200
leaq -0x150(%rbp), %rdi
callq 0x5200
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x190(%rbp), %rdi
callq 0x5200
leaq -0x191(%rbp), %rdi
callq 0x53c0
jmp 0xb2b34
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x55d0
movq -0x520(%rbp), %rdx
leaq 0x3ca76(%rip), %rsi     # 0xef41c
leaq -0x1b8(%rbp), %rdi
callq 0x19840
jmp 0xb29b4
movl $0x48, %edi
callq 0x5340
movq %rax, -0x528(%rbp)
jmp 0xb29c7
movb $0x1, -0x201(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5150
jmp 0xb29e3
leaq -0xe8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x5150
jmp 0xb29f8
movq -0x528(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
leaq -0x200(%rbp), %rdx
callq 0xbeae0
jmp 0xb2a14
movq -0x528(%rbp), %rdx
movb $0x0, -0x201(%rbp)
movq -0x78(%rbp), %rcx
leaq 0xadca3(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x1b8(%rbp), %rsi
callq 0xbdf00
jmp 0xb2a40
leaq -0x200(%rbp), %rdi
callq 0x5200
leaq -0x1e0(%rbp), %rdi
callq 0x5200
leaq -0x1b8(%rbp), %rdi
callq 0x5200
leaq -0x1b9(%rbp), %rdi
callq 0x53c0
leaq -0x108(%rbp), %rdi
callq 0xbeff0
jmp 0xb34c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2b1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2afe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2af2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x5200
leaq -0x1e0(%rbp), %rdi
callq 0x5200
testb $0x1, -0x201(%rbp)
jne 0xb2b09
jmp 0xb2b1a
movq -0x528(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb2b1c
leaq -0x1b8(%rbp), %rdi
callq 0x5200
leaq -0x1b9(%rbp), %rdi
callq 0x53c0
leaq -0x108(%rbp), %rdi
callq 0xbeff0
jmp 0xb34d3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
addq $0x8, %rdi
callq 0x50d0
movsbl (%rax), %eax
cmpl $0x5e, %eax
jne 0xb2c15
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x210(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x55d0
movq -0x530(%rbp), %rdx
leaq 0x3e5ae(%rip), %rsi     # 0xf1143
leaq -0x230(%rbp), %rdi
callq 0x19840
jmp 0xb2ba3
movq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xae910
jmp 0xb2bb8
leaq -0x230(%rbp), %rdi
callq 0x5200
leaq -0x231(%rbp), %rdi
callq 0x53c0
jmp 0xb2c15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2c04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x5200
leaq -0x231(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq 0xadaf0(%rip), %rdi     # 0x160718
movl $0x1, %edx
leaq -0x70(%rbp), %rcx
callq 0xbf8a0
movb %al, -0x531(%rbp)
jmp 0xb2c3e
movb -0x531(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xb2de5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x240(%rbp)
leaq -0x2c1(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x55d0
movq -0x540(%rbp), %rdx
leaq 0x3e4de(%rip), %rsi     # 0xf1163
leaq -0x2c0(%rbp), %rdi
callq 0x19840
jmp 0xb2c93
leaq 0x3ea81(%rip), %rdx     # 0xf171b
leaq -0x2a0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x1a380
jmp 0xb2caf
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
addq $0x8, %rdx
leaq -0x280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x1a4d0
jmp 0xb2cd0
leaq 0x3ea44(%rip), %rdx     # 0xf171b
leaq -0x260(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x1a380
jmp 0xb2cec
movq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xae910
jmp 0xb2d01
leaq -0x260(%rbp), %rdi
callq 0x5200
leaq -0x280(%rbp), %rdi
callq 0x5200
leaq -0x2a0(%rbp), %rdi
callq 0x5200
leaq -0x2c0(%rbp), %rdi
callq 0x5200
leaq -0x2c1(%rbp), %rdi
callq 0x53c0
jmp 0xb2de5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2dd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2dc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2dbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2db0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x5200
leaq -0x280(%rbp), %rdi
callq 0x5200
leaq -0x2a0(%rbp), %rdi
callq 0x5200
leaq -0x2c0(%rbp), %rdi
callq 0x5200
leaq -0x2c1(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0xb317b
cmpl $-0x1, -0x10(%rbp)
jne 0xb2f91
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x2d0(%rbp)
leaq -0x351(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x55d0
movq -0x548(%rbp), %rdx
leaq 0x3e350(%rip), %rsi     # 0xf1181
leaq -0x350(%rbp), %rdi
callq 0x19840
jmp 0xb2e3f
leaq 0x3e8d5(%rip), %rdx     # 0xf171b
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x1a380
jmp 0xb2e5b
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
addq $0x8, %rdx
leaq -0x310(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x1a4d0
jmp 0xb2e7c
leaq 0x3e317(%rip), %rdx     # 0xf119a
leaq -0x2f0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x1a380
jmp 0xb2e98
movq -0x2d0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0xae910
jmp 0xb2ead
leaq -0x2f0(%rbp), %rdi
callq 0x5200
leaq -0x310(%rbp), %rdi
callq 0x5200
leaq -0x330(%rbp), %rdi
callq 0x5200
leaq -0x350(%rbp), %rdi
callq 0x5200
leaq -0x351(%rbp), %rdi
callq 0x53c0
jmp 0xb2f91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2f80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2f74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2f68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb2f5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x5200
leaq -0x310(%rbp), %rdi
callq 0x5200
leaq -0x330(%rbp), %rdi
callq 0x5200
leaq -0x350(%rbp), %rdi
callq 0x5200
leaq -0x351(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
leaq -0x388(%rbp), %rdi
callq 0xba600
jmp 0xb2fa7
movq -0x388(%rbp), %rax
movq %rax, -0x558(%rbp)
leaq -0x388(%rbp), %rdi
callq 0xbf290
movq -0x558(%rbp), %rax
movq %rax, -0x360(%rbp)
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x55d0
movq -0x550(%rbp), %rdx
leaq 0x3e1b8(%rip), %rsi     # 0xf11a8
leaq -0x3a8(%rbp), %rdi
callq 0x19840
jmp 0xb2ffe
movl $0x48, %edi
callq 0x5340
movq %rax, -0x560(%rbp)
jmp 0xb3011
movb $0x1, -0x3f1(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq -0x3d0(%rbp), %rdi
callq 0x5150
jmp 0xb3032
leaq -0x50(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
callq 0x5150
jmp 0xb3044
movq -0x560(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
leaq -0x3f0(%rbp), %rdx
callq 0xbeae0
jmp 0xb3060
movq -0x560(%rbp), %rdx
movb $0x0, -0x3f1(%rbp)
movq -0x360(%rbp), %rcx
movq -0x78(%rbp), %r8
leaq 0xad650(%rip), %rdi     # 0x1606d0
leaq -0x3a8(%rbp), %rsi
callq 0xbdf00
jmp 0xb308e
leaq -0x3f0(%rbp), %rdi
callq 0x5200
leaq -0x3d0(%rbp), %rdi
callq 0x5200
leaq -0x3a8(%rbp), %rdi
callq 0x5200
leaq -0x3a9(%rbp), %rdi
callq 0x53c0
jmp 0xb34bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb316a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb315e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb3140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb3134
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x5200
leaq -0x3d0(%rbp), %rdi
callq 0x5200
testb $0x1, -0x3f1(%rbp)
jne 0xb314b
jmp 0xb315c
movq -0x560(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb315e
leaq -0x3a8(%rbp), %rdi
callq 0x5200
leaq -0x3a9(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
cmpl $-0x1, -0x10(%rbp)
je 0xb3318
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x400(%rbp)
leaq -0x481(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x55d0
movq -0x568(%rbp), %rdx
leaq 0x3dff4(%rip), %rsi     # 0xf11ac
leaq -0x480(%rbp), %rdi
callq 0x19840
jmp 0xb31c6
leaq 0x3e54e(%rip), %rdx     # 0xf171b
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x1a380
jmp 0xb31e2
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
addq $0x8, %rdx
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x1a4d0
jmp 0xb3203
leaq 0x3e511(%rip), %rdx     # 0xf171b
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x1a380
jmp 0xb321f
movq -0x400(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0xae910
jmp 0xb3234
leaq -0x420(%rbp), %rdi
callq 0x5200
leaq -0x440(%rbp), %rdi
callq 0x5200
leaq -0x460(%rbp), %rdi
callq 0x5200
leaq -0x480(%rbp), %rdi
callq 0x5200
leaq -0x481(%rbp), %rdi
callq 0x53c0
jmp 0xb3318
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb3307
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb32fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb32ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb32e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x5200
leaq -0x440(%rbp), %rdi
callq 0x5200
leaq -0x460(%rbp), %rdi
callq 0x5200
leaq -0x480(%rbp), %rdi
callq 0x5200
leaq -0x481(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x55d0
movq -0x570(%rbp), %rdx
leaq 0x3c0e3(%rip), %rsi     # 0xef41c
leaq -0x4a8(%rbp), %rdi
callq 0x19840
jmp 0xb3347
movl $0x48, %edi
callq 0x5340
movq %rax, -0x578(%rbp)
jmp 0xb335a
movb $0x1, -0x4f1(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
leaq -0x4d0(%rbp), %rdi
callq 0x5150
jmp 0xb337b
leaq -0x50(%rbp), %rsi
leaq -0x4f0(%rbp), %rdi
callq 0x5150
jmp 0xb338d
movq -0x578(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
leaq -0x4f0(%rbp), %rdx
callq 0xbeae0
jmp 0xb33a9
movq -0x578(%rbp), %rdx
movb $0x0, -0x4f1(%rbp)
movq -0x78(%rbp), %rcx
leaq 0xad30e(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x4a8(%rbp), %rsi
callq 0xbdf00
jmp 0xb33d5
leaq -0x4f0(%rbp), %rdi
callq 0x5200
leaq -0x4d0(%rbp), %rdi
callq 0x5200
leaq -0x4a8(%rbp), %rdi
callq 0x5200
leaq -0x4a9(%rbp), %rdi
callq 0x53c0
jmp 0xb34bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb34b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb34a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb3487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xb347b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x5200
leaq -0x4d0(%rbp), %rdi
callq 0x5200
testb $0x1, -0x4f1(%rbp)
jne 0xb3492
jmp 0xb34a3
movq -0x578(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb34a5
leaq -0x4a8(%rbp), %rdi
callq 0x5200
leaq -0x4a9(%rbp), %rdi
callq 0x53c0
jmp 0xb34d3
jmp 0xb34c1
leaq -0x70(%rbp), %rdi
callq 0xbeaa0
addq $0x580, %rsp            # imm = 0x580
popq %rbp
retq
leaq -0x70(%rbp), %rdi
callq 0xbeaa0
movq -0xa8(%rbp), %rdi
callq 0x55b0
nopl (%rax,%rax)