// File: sighingnow[P]compile-pascal/pl0_tac_gen.cpp
// Function: pl0_tac_case_stmt(pl0_ast_case_stmt const*)
void pl0_tac_case_stmt(pl0_ast_case_stmt const *stmt) {
    cout << __func__;
    auto case_cond = pl0_tac_expr(stmt->expr);
    // add case condition value to symbol table.
    Value *cond;
    if (case_cond.first->t == Value::TYPE::STR && case_cond.first->sv[0] == '~') {
        cond = new Value(string("~") + case_cond.first->sv, case_cond.second);
        irb.emit("def", cond, new Value(case_cond.second, "string"), new Value(-1, "integer"));
        irb.emit("=", cond, case_cond.first);
    }
    else {
        cond = case_cond.first;
    }
    int endlabel = irb.makelabel();
    std::vector<int> labels;
    for (auto && item: stmt->terms) {
        labels.emplace_back(irb.makelabel());
    }
    labels.emplace_back(endlabel);
    irb.emit("goto", new Value("jmp", "string"), new Value(labels[0], "integer"));
    for (size_t i = 0; i < stmt->terms.size(); ++i) {
        int t = irb.makelabel();
        irb.emitlabel(labels[i]);
        irb.emit("cmp", new Value(t, "integer"), cond, new Value(stmt->terms[i]->constv->val, "integer"));
        irb.emit("goto", new Value("jne", "string"), new Value(labels[i+1], "integer"));
        irb.emitlabel(t);
        pl0_tac_stmt(stmt->terms[i]->stmt);
        irb.emit("goto", new Value("jmp", "string"), new Value(endlabel, "integer"));
    }
    irb.emitlabel(endlabel);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x570, %rsp            # imm = 0x570
movq %rdi, -0x8(%rbp)
movq 0xaa012(%rip), %rdi     # 0x15efd8
leaq 0x3cc62(%rip), %rsi     # 0xf1c2f
callq 0x5330
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x30(%rbp), %rdi
callq 0xba600
movq -0x30(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xb54c2
movq -0x30(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x5660
movq %rax, -0x428(%rbp)
jmp 0xb500a
movq -0x428(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x7e, %eax
jne 0xb54c2
movl $0x48, %edi
callq 0x5340
movq %rax, -0x430(%rbp)
jmp 0xb5030
movb $0x1, -0xb1(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x55d0
movq -0x438(%rbp), %rdx
leaq 0x3c198(%rip), %rsi     # 0xf11f0
leaq -0x88(%rbp), %rdi
callq 0x19840
jmp 0xb5066
movq -0x30(%rbp), %rdx
addq $0x8, %rdx
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1a4d0
jmp 0xb5080
leaq -0x28(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x5150
jmp 0xb5092
movq -0x430(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0xbeae0
jmp 0xb50ab
movq -0x430(%rbp), %rax
movb $0x0, -0xb1(%rbp)
movq %rax, -0x38(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5200
leaq -0x68(%rbp), %rdi
callq 0x5200
leaq -0x88(%rbp), %rdi
callq 0x5200
leaq -0x89(%rbp), %rdi
callq 0x53c0
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x55d0
movq -0x440(%rbp), %rdx
leaq 0x3bfa0(%rip), %rsi     # 0xf10ab
leaq -0xd8(%rbp), %rdi
callq 0x19840
jmp 0xb5119
movq -0x38(%rbp), %rax
movq %rax, -0x450(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x448(%rbp)
jmp 0xb5137
movb $0x1, -0x122(%rbp)
leaq -0x28(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x5150
jmp 0xb5150
leaq -0x121(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x55d0
movq -0x458(%rbp), %rdx
leaq 0x3c82f(%rip), %rsi     # 0xf19a0
leaq -0x120(%rbp), %rdi
callq 0x19840
jmp 0xb517f
movq -0x448(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xbeae0
jmp 0xb519b
movb $0x0, -0x122(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x460(%rbp)
jmp 0xb51b5
movb $0x1, -0x14a(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x55d0
movq -0x468(%rbp), %rdx
leaq 0x3a06a(%rip), %rsi     # 0xef247
leaq -0x148(%rbp), %rdi
callq 0x19840
jmp 0xb51eb
movq -0x460(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
leaq -0x148(%rbp), %rdx
callq 0xbdfe0
jmp 0xb5205
movq -0x460(%rbp), %r8
movq -0x448(%rbp), %rcx
movq -0x450(%rbp), %rdx
movb $0x0, -0x14a(%rbp)
leaq 0xab4a8(%rip), %rdi     # 0x1606d0
leaq -0xd8(%rbp), %rsi
callq 0xbdf00
jmp 0xb5236
leaq -0x148(%rbp), %rdi
callq 0x5200
leaq -0x149(%rbp), %rdi
callq 0x53c0
leaq -0x120(%rbp), %rdi
callq 0x5200
leaq -0x121(%rbp), %rdi
callq 0x53c0
leaq -0x100(%rbp), %rdi
callq 0x5200
leaq -0xd8(%rbp), %rdi
callq 0x5200
leaq -0xd9(%rbp), %rdi
callq 0x53c0
leaq -0x171(%rbp), %rdi
movq %rdi, -0x470(%rbp)
callq 0x55d0
movq -0x470(%rbp), %rdx
leaq 0x3a171(%rip), %rsi     # 0xef41c
leaq -0x170(%rbp), %rdi
callq 0x19840
jmp 0xb52b9
movq -0x38(%rbp), %rdx
movq -0x30(%rbp), %rcx
leaq 0xab408(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x170(%rbp), %rsi
callq 0xbdf00
jmp 0xb52db
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x171(%rbp), %rdi
callq 0x53c0
jmp 0xb54ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb61f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5360
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5354
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb534b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5200
leaq -0x68(%rbp), %rdi
callq 0x5200
leaq -0x88(%rbp), %rdi
callq 0x5200
leaq -0x89(%rbp), %rdi
callq 0x53c0
testb $0x1, -0xb1(%rbp)
jne 0xb5377
jmp 0xb5388
movq -0x430(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb61f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb547a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb546e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5450
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5438
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb542c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5402
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x5200
leaq -0x149(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x14a(%rbp)
jne 0xb5419
jmp 0xb542a
movq -0x460(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb542c
leaq -0x120(%rbp), %rdi
callq 0x5200
leaq -0x121(%rbp), %rdi
callq 0x53c0
leaq -0x100(%rbp), %rdi
callq 0x5200
testb $0x1, -0x122(%rbp)
jne 0xb545b
jmp 0xb546c
movq -0x448(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb546e
leaq -0xd8(%rbp), %rdi
callq 0x5200
leaq -0xd9(%rbp), %rdi
callq 0x53c0
jmp 0xb61f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb54b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x5200
leaq -0x171(%rbp), %rdi
callq 0x53c0
jmp 0xb61f0
movq -0x30(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq 0xab1ff(%rip), %rdi     # 0x1606d0
callq 0xa01e0
movl %eax, -0x474(%rbp)
jmp 0xb54de
movl -0x474(%rbp), %eax
movl %eax, -0x178(%rbp)
leaq -0x190(%rbp), %rdi
callq 0xbfa60
movq -0x8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x198(%rbp)
movq -0x198(%rbp), %rdi
callq 0x3e470
movq %rax, -0x1a0(%rbp)
movq -0x198(%rbp), %rdi
callq 0x3e4a0
movq %rax, -0x1a8(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xbfa80
testb $0x1, %al
jne 0xb5544
jmp 0xb55ad
leaq -0x1a0(%rbp), %rdi
callq 0xbfac0
movq %rax, -0x1b0(%rbp)
leaq 0xab172(%rip), %rdi     # 0x1606d0
callq 0xa01e0
movl %eax, -0x478(%rbp)
jmp 0xb556b
movl -0x478(%rbp), %eax
movl %eax, -0x1b4(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x1b4(%rbp), %rsi
callq 0xbfae0
jmp 0xb558c
jmp 0xb558e
leaq -0x1a0(%rbp), %rdi
callq 0xbfb60
jmp 0xb552b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb61e4
leaq -0x190(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xbfb80
jmp 0xb55c2
leaq -0x1d9(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x55d0
movq -0x480(%rbp), %rdx
leaq 0x3bbef(%rip), %rsi     # 0xf11d2
leaq -0x1d8(%rbp), %rdi
callq 0x19840
jmp 0xb55f1
movl $0x48, %edi
callq 0x5340
movq %rax, -0x488(%rbp)
jmp 0xb5604
movb $0x1, -0x22a(%rbp)
leaq -0x201(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x55d0
movq -0x490(%rbp), %rdx
leaq 0x3bbc0(%rip), %rsi     # 0xf11ec
leaq -0x200(%rbp), %rdi
callq 0x19840
jmp 0xb563a
leaq -0x229(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x55d0
movq -0x498(%rbp), %rdx
leaq 0x3c345(%rip), %rsi     # 0xf19a0
leaq -0x228(%rbp), %rdi
callq 0x19840
jmp 0xb5669
movq -0x488(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x228(%rbp), %rdx
callq 0xbeae0
jmp 0xb5685
movb $0x0, -0x22a(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x4a0(%rbp)
jmp 0xb569f
movb $0x1, -0x252(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
callq 0xbfc00
movl (%rax), %eax
movl %eax, -0x4ac(%rbp)
leaq -0x251(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x55d0
movq -0x4a8(%rbp), %rdx
leaq 0x39b68(%rip), %rsi     # 0xef247
leaq -0x250(%rbp), %rdi
callq 0x19840
jmp 0xb56ed
movl -0x4ac(%rbp), %esi
movq -0x4a0(%rbp), %rdi
leaq -0x250(%rbp), %rdx
callq 0xbdfe0
jmp 0xb5708
movq -0x4a0(%rbp), %rcx
movq -0x488(%rbp), %rdx
movb $0x0, -0x252(%rbp)
leaq 0xaafac(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x1d8(%rbp), %rsi
callq 0xbdf00
jmp 0xb5737
leaq -0x250(%rbp), %rdi
callq 0x5200
leaq -0x251(%rbp), %rdi
callq 0x53c0
leaq -0x228(%rbp), %rdi
callq 0x5200
leaq -0x229(%rbp), %rdi
callq 0x53c0
leaq -0x200(%rbp), %rdi
callq 0x5200
leaq -0x201(%rbp), %rdi
callq 0x53c0
leaq -0x1d8(%rbp), %rdi
callq 0x5200
leaq -0x1d9(%rbp), %rdi
callq 0x53c0
movq $0x0, -0x260(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
callq 0x3e350
movq %rax, %rcx
movq -0x4b8(%rbp), %rax
cmpq %rcx, %rax
jae 0xb61b2
leaq 0xaaef9(%rip), %rdi     # 0x1606d0
callq 0xa01e0
movl %eax, -0x4bc(%rbp)
jmp 0xb57e4
movl -0x4bc(%rbp), %eax
movl %eax, -0x264(%rbp)
movq -0x260(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0xbfc00
movl (%rax), %esi
leaq 0xaaec4(%rip), %rdi     # 0x1606d0
callq 0xbe1d0
jmp 0xb5813
leaq -0x289(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x55d0
movq -0x4c8(%rbp), %rdx
leaq 0x3b99a(%rip), %rsi     # 0xf11ce
leaq -0x288(%rbp), %rdi
callq 0x19840
jmp 0xb5842
movl $0x48, %edi
callq 0x5340
movq %rax, -0x4d0(%rbp)
jmp 0xb5855
movb $0x1, -0x2b2(%rbp)
movl -0x264(%rbp), %eax
movl %eax, -0x4dc(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x55d0
movq -0x4d8(%rbp), %rdx
leaq 0x399be(%rip), %rsi     # 0xef247
leaq -0x2b0(%rbp), %rdi
callq 0x19840
jmp 0xb5897
movl -0x4dc(%rbp), %esi
movq -0x4d0(%rbp), %rdi
leaq -0x2b0(%rbp), %rdx
callq 0xbdfe0
jmp 0xb58b2
movb $0x0, -0x2b2(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x4e8(%rbp)
jmp 0xb58d7
movb $0x1, -0x2da(%rbp)
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
movq -0x260(%rbp), %rsi
callq 0xbfc20
movq (%rax), %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %eax
movl %eax, -0x4fc(%rbp)
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x55d0
movq -0x4f8(%rbp), %rdx
leaq 0x39924(%rip), %rsi     # 0xef247
leaq -0x2d8(%rbp), %rdi
callq 0x19840
jmp 0xb5931
movl -0x4fc(%rbp), %esi
movq -0x4e8(%rbp), %rdi
leaq -0x2d8(%rbp), %rdx
callq 0xbdfe0
jmp 0xb594c
movq -0x4e8(%rbp), %r8
movq -0x4f0(%rbp), %rcx
movq -0x4d0(%rbp), %rdx
movb $0x0, -0x2da(%rbp)
leaq 0xaad61(%rip), %rdi     # 0x1606d0
leaq -0x288(%rbp), %rsi
callq 0xbdf00
jmp 0xb597d
leaq -0x2d8(%rbp), %rdi
callq 0x5200
leaq -0x2d9(%rbp), %rdi
callq 0x53c0
leaq -0x2b0(%rbp), %rdi
callq 0x5200
leaq -0x2b1(%rbp), %rdi
callq 0x53c0
leaq -0x288(%rbp), %rdi
callq 0x5200
leaq -0x289(%rbp), %rdi
callq 0x53c0
leaq -0x301(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x55d0
movq -0x508(%rbp), %rdx
leaq 0x3b7ec(%rip), %rsi     # 0xf11d2
leaq -0x300(%rbp), %rdi
callq 0x19840
jmp 0xb59f4
movl $0x48, %edi
callq 0x5340
movq %rax, -0x510(%rbp)
jmp 0xb5a07
movb $0x1, -0x352(%rbp)
leaq -0x329(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x55d0
movq -0x518(%rbp), %rdx
leaq 0x3b7b6(%rip), %rsi     # 0xf11e5
leaq -0x328(%rbp), %rdi
callq 0x19840
jmp 0xb5a3d
leaq -0x351(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x55d0
movq -0x520(%rbp), %rdx
leaq 0x3bf42(%rip), %rsi     # 0xf19a0
leaq -0x350(%rbp), %rdi
callq 0x19840
jmp 0xb5a6c
movq -0x510(%rbp), %rdi
leaq -0x328(%rbp), %rsi
leaq -0x350(%rbp), %rdx
callq 0xbeae0
jmp 0xb5a88
movb $0x0, -0x352(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x528(%rbp)
jmp 0xb5aa2
movb $0x1, -0x37a(%rbp)
movq -0x260(%rbp), %rsi
incq %rsi
leaq -0x190(%rbp), %rdi
callq 0xbfc00
movl (%rax), %eax
movl %eax, -0x534(%rbp)
leaq -0x379(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x55d0
movq -0x530(%rbp), %rdx
leaq 0x3975f(%rip), %rsi     # 0xef247
leaq -0x378(%rbp), %rdi
callq 0x19840
jmp 0xb5af6
movl -0x534(%rbp), %esi
movq -0x528(%rbp), %rdi
leaq -0x378(%rbp), %rdx
callq 0xbdfe0
jmp 0xb5b11
movq -0x528(%rbp), %rcx
movq -0x510(%rbp), %rdx
movb $0x0, -0x37a(%rbp)
leaq 0xaaba3(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x300(%rbp), %rsi
callq 0xbdf00
jmp 0xb5b40
leaq -0x378(%rbp), %rdi
callq 0x5200
leaq -0x379(%rbp), %rdi
callq 0x53c0
leaq -0x350(%rbp), %rdi
callq 0x5200
leaq -0x351(%rbp), %rdi
callq 0x53c0
leaq -0x328(%rbp), %rdi
callq 0x5200
leaq -0x329(%rbp), %rdi
callq 0x53c0
leaq -0x300(%rbp), %rdi
callq 0x5200
leaq -0x301(%rbp), %rdi
callq 0x53c0
movl -0x264(%rbp), %esi
leaq 0xaab23(%rip), %rdi     # 0x1606d0
callq 0xbe1d0
jmp 0xb5bb4
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
movq -0x260(%rbp), %rsi
callq 0xbfc20
movq (%rax), %rax
movq 0x10(%rax), %rdi
callq 0xb23b0
jmp 0xb5bd6
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x55d0
movq -0x540(%rbp), %rdx
leaq 0x3b5db(%rip), %rsi     # 0xf11d2
leaq -0x3a0(%rbp), %rdi
callq 0x19840
jmp 0xb5c05
movl $0x48, %edi
callq 0x5340
movq %rax, -0x548(%rbp)
jmp 0xb5c18
movb $0x1, -0x3f2(%rbp)
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x55d0
movq -0x550(%rbp), %rdx
leaq 0x3b5ac(%rip), %rsi     # 0xf11ec
leaq -0x3c8(%rbp), %rdi
callq 0x19840
jmp 0xb5c4e
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x55d0
movq -0x558(%rbp), %rdx
leaq 0x3bd31(%rip), %rsi     # 0xf19a0
leaq -0x3f0(%rbp), %rdi
callq 0x19840
jmp 0xb5c7d
movq -0x548(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
leaq -0x3f0(%rbp), %rdx
callq 0xbeae0
jmp 0xb5c99
movb $0x0, -0x3f2(%rbp)
movl $0x48, %edi
callq 0x5340
movq %rax, -0x560(%rbp)
jmp 0xb5cb3
movb $0x1, -0x41a(%rbp)
movl -0x178(%rbp), %eax
movl %eax, -0x56c(%rbp)
leaq -0x419(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x55d0
movq -0x568(%rbp), %rdx
leaq 0x39560(%rip), %rsi     # 0xef247
leaq -0x418(%rbp), %rdi
callq 0x19840
jmp 0xb5cf5
movl -0x56c(%rbp), %esi
movq -0x560(%rbp), %rdi
leaq -0x418(%rbp), %rdx
callq 0xbdfe0
jmp 0xb5d10
movq -0x560(%rbp), %rcx
movq -0x548(%rbp), %rdx
movb $0x0, -0x41a(%rbp)
leaq 0xaa9a4(%rip), %rdi     # 0x1606d0
xorl %eax, %eax
movl %eax, %r8d
leaq -0x3a0(%rbp), %rsi
callq 0xbdf00
jmp 0xb5d3f
leaq -0x418(%rbp), %rdi
callq 0x5200
leaq -0x419(%rbp), %rdi
callq 0x53c0
leaq -0x3f0(%rbp), %rdi
callq 0x5200
leaq -0x3f1(%rbp), %rdi
callq 0x53c0
leaq -0x3c8(%rbp), %rdi
callq 0x5200
leaq -0x3c9(%rbp), %rdi
callq 0x53c0
leaq -0x3a0(%rbp), %rdi
callq 0x5200
leaq -0x3a1(%rbp), %rdi
callq 0x53c0
movq -0x260(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x260(%rbp)
jmp 0xb57a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5eaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5ea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5e79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5e61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5e55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5e2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x5200
leaq -0x251(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x252(%rbp)
jne 0xb5e42
jmp 0xb5e53
movq -0x4a0(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb5e55
leaq -0x228(%rbp), %rdi
callq 0x5200
leaq -0x229(%rbp), %rdi
callq 0x53c0
leaq -0x200(%rbp), %rdi
callq 0x5200
leaq -0x201(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x22a(%rbp)
jne 0xb5e90
jmp 0xb5ea1
movq -0x488(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb5ea3
leaq -0x1d8(%rbp), %rdi
callq 0x5200
leaq -0x1d9(%rbp), %rdi
callq 0x53c0
jmp 0xb61e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5f90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5f84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5f5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5f4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb5f24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x5200
leaq -0x2d9(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x2da(%rbp)
jne 0xb5f3b
jmp 0xb5f4c
movq -0x4e8(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb5f4e
leaq -0x2b0(%rbp), %rdi
callq 0x5200
leaq -0x2b1(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x2b2(%rbp)
jne 0xb5f71
jmp 0xb5f82
movq -0x4d0(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb5f84
leaq -0x288(%rbp), %rdi
callq 0x5200
leaq -0x289(%rbp), %rdi
callq 0x53c0
jmp 0xb61e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb609a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb608e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb604c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6040
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6016
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x5200
leaq -0x379(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x37a(%rbp)
jne 0xb602d
jmp 0xb603e
movq -0x528(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb6040
leaq -0x350(%rbp), %rdi
callq 0x5200
leaq -0x351(%rbp), %rdi
callq 0x53c0
leaq -0x328(%rbp), %rdi
callq 0x5200
leaq -0x329(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x352(%rbp)
jne 0xb607b
jmp 0xb608c
movq -0x510(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb608e
leaq -0x300(%rbp), %rdi
callq 0x5200
leaq -0x301(%rbp), %rdi
callq 0x53c0
jmp 0xb61e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb61a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6198
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb616e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb614a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xb6120
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x5200
leaq -0x419(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x41a(%rbp)
jne 0xb6137
jmp 0xb6148
movq -0x560(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb614a
leaq -0x3f0(%rbp), %rdi
callq 0x5200
leaq -0x3f1(%rbp), %rdi
callq 0x53c0
leaq -0x3c8(%rbp), %rdi
callq 0x5200
leaq -0x3c9(%rbp), %rdi
callq 0x53c0
testb $0x1, -0x3f2(%rbp)
jne 0xb6185
jmp 0xb6196
movq -0x548(%rbp), %rdi
movl $0x48, %esi
callq 0x5350
jmp 0xb6198
leaq -0x3a0(%rbp), %rdi
callq 0x5200
leaq -0x3a1(%rbp), %rdi
callq 0x53c0
jmp 0xb61e4
movl -0x178(%rbp), %esi
leaq 0xaa511(%rip), %rdi     # 0x1606d0
callq 0xbe1d0
jmp 0xb61c6
leaq -0x190(%rbp), %rdi
callq 0xbfc40
leaq -0x30(%rbp), %rdi
callq 0xbf290
addq $0x570, %rsp            # imm = 0x570
popq %rbp
retq
leaq -0x190(%rbp), %rdi
callq 0xbfc40
leaq -0x30(%rbp), %rdi
callq 0xbf290
movq -0x40(%rbp), %rdi
callq 0x55b0
nopw %cs:(%rax,%rax)