// File: jpcima[P]faustmd/metadata.cpp
// Function: extract_widget(pugi::xml_node, bool, Metadata&)
static int extract_widget(pugi::xml_node node, bool is_active, Metadata &md)
{
    Metadata::Widget w;
    w.type = Metadata::Widget::type_from_name(node.attribute("type").value());
    if (w.type == (Metadata::Widget::Type)-1)
        return -1;

    w.id = std::stoi(node.attribute("id").value());
    w.label = node.child_value("label");
    w.var = node.child_value("varname");

    w.symbol = mangle(w.label);

    if (is_active && (w.type == Metadata::Widget::Type::HSlider ||
                      w.type == Metadata::Widget::Type::VSlider ||
                      w.type == Metadata::Widget::Type::NEntry)) {
        w.init = std::stof(node.child_value("init"));
        w.min = std::stof(node.child_value("min"));
        w.max = std::stof(node.child_value("max"));
        w.step = std::stof(node.child_value("step"));
    }
    else if (is_active && (w.type == Metadata::Widget::Type::Button ||
                           w.type == Metadata::Widget::Type::CheckBox)) {
        w.init = 0;
        w.min = 0;
        w.max = 1;
        w.step = 1;
    }
    else if (!is_active && (w.type == Metadata::Widget::Type::VBarGraph ||
                            w.type == Metadata::Widget::Type::HBarGraph)) {
        w.min = std::stof(node.child_value("min"));
        w.max = std::stof(node.child_value("max"));
    }
    else
        return -1;

    for (pugi::xml_node meta : node.children("meta")) {
        std::string key = meta.attribute("key").value();
        std::string value = meta.child_value();
        if (is_decint_string(key) && value.empty())
            continue;
        w.metadata.emplace_back(key, value);

        if (key == "unit")
            w.unit = value;
        else if (key == "scale") {
            w.scale = Metadata::Widget::scale_from_name(value);
            if (w.scale == (Metadata::Widget::Scale)-1) {
                warns() << "Unrecognized scale type `" << value << "`\n";
                w.scale = Metadata::Widget::Scale::Linear;
            }
        }
        else if (key == "tooltip")
            w.tooltip = value;
        else if (key == "md.symbol")
            w.symbol = mangle(value);
    }

    (is_active ? md.active : md.passive).push_back(std::move(w));
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
movb %sil, %al
movq %rdi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x3c290
leaq 0x32c77(%rip), %rsi     # 0x6b1b5
leaq -0x10(%rbp), %rdi
callq 0x3f240
movq %rax, -0x398(%rbp)
jmp 0x38550
movq -0x398(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x3e050
movq %rax, -0x3a0(%rbp)
jmp 0x38573
movq -0x3a0(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x9300
jmp 0x38588
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x3b660
movl %eax, -0xf8(%rbp)
cmpl $-0x1, -0xf8(%rbp)
jne 0x385d7
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x120(%rbp)
jmp 0x39245
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x3925d
leaq 0x2dbe1(%rip), %rsi     # 0x661bf
leaq -0x10(%rbp), %rdi
callq 0x3f240
movq %rax, -0x3a8(%rbp)
jmp 0x385f0
movq -0x3a8(%rbp), %rax
movq %rax, -0x148(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x3e050
movq %rax, -0x3b0(%rbp)
jmp 0x38613
leaq -0x149(%rbp), %rdi
movq %rdi, -0x3b8(%rbp)
callq 0x7a30
movq -0x3b0(%rbp), %rsi
movq -0x3b8(%rbp), %rdx
leaq -0x140(%rbp), %rdi
callq 0x8cf0
jmp 0x38642
xorl %eax, %eax
movl %eax, %esi
leaq -0x140(%rbp), %rdi
movl $0xa, %edx
callq 0x3bbb0
movl %eax, -0x3bc(%rbp)
jmp 0x3865f
movl -0x3bc(%rbp), %eax
movl %eax, -0xf4(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x7380
leaq -0x149(%rbp), %rdi
callq 0x75c0
leaq 0x2f485(%rip), %rsi     # 0x67b0f
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x3c8(%rbp)
jmp 0x3869c
movq -0x3c8(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x77d0
jmp 0x386b1
leaq 0x2df95(%rip), %rsi     # 0x6664d
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x3d0(%rbp)
jmp 0x386ca
movq -0x3d0(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x77d0
jmp 0x386df
leaq -0xf0(%rbp), %rsi
leaq -0x180(%rbp), %rdi
callq 0x3bcf0
jmp 0x386f4
movq -0x180(%rbp), %rsi
movq -0x178(%rbp), %rdx
leaq -0x170(%rbp), %rdi
callq 0x3b970
jmp 0x38710
leaq -0xb0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x7080
jmp 0x38725
leaq -0x170(%rbp), %rdi
callq 0x7380
testb $0x1, -0x11(%rbp)
je 0x38af9
cmpl $0x3, -0xf8(%rbp)
je 0x3875a
cmpl $0x2, -0xf8(%rbp)
je 0x3875a
cmpl $0x4, -0xf8(%rbp)
jne 0x38af9
leaq 0x2f3b4(%rip), %rsi     # 0x67b15
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x3d8(%rbp)
jmp 0x38773
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x7a30
movq -0x3d8(%rbp), %rsi
movq -0x3e0(%rbp), %rdx
leaq -0x1a0(%rbp), %rdi
callq 0x8cf0
jmp 0x387a2
xorl %eax, %eax
movl %eax, %esi
leaq -0x1a0(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x3e4(%rbp)
jmp 0x387bc
movss -0x3e4(%rbp), %xmm0
movss %xmm0, -0x90(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x7380
leaq -0x1a1(%rbp), %rdi
callq 0x75c0
leaq 0x2f32f(%rip), %rsi     # 0x67b1a
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x3f0(%rbp)
jmp 0x387fd
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x7a30
movq -0x3f0(%rbp), %rsi
movq -0x3f8(%rbp), %rdx
leaq -0x1c8(%rbp), %rdi
callq 0x8cf0
jmp 0x3882c
xorl %eax, %eax
movl %eax, %esi
leaq -0x1c8(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x3fc(%rbp)
jmp 0x38846
movss -0x3fc(%rbp), %xmm0
movss %xmm0, -0x8c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x7380
leaq -0x1c9(%rbp), %rdi
callq 0x75c0
leaq 0x2f2a9(%rip), %rsi     # 0x67b1e
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x408(%rbp)
jmp 0x38887
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0x7a30
movq -0x408(%rbp), %rsi
movq -0x410(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
callq 0x8cf0
jmp 0x388b6
xorl %eax, %eax
movl %eax, %esi
leaq -0x1f0(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x414(%rbp)
jmp 0x388d0
movss -0x414(%rbp), %xmm0
movss %xmm0, -0x88(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x7380
leaq -0x1f1(%rbp), %rdi
callq 0x75c0
leaq 0x3285b(%rip), %rsi     # 0x6b15a
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x420(%rbp)
jmp 0x38911
leaq -0x219(%rbp), %rdi
movq %rdi, -0x428(%rbp)
callq 0x7a30
movq -0x420(%rbp), %rsi
movq -0x428(%rbp), %rdx
leaq -0x218(%rbp), %rdi
callq 0x8cf0
jmp 0x38940
xorl %eax, %eax
movl %eax, %esi
leaq -0x218(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x42c(%rbp)
jmp 0x3895a
movss -0x42c(%rbp), %xmm0
movss %xmm0, -0x84(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x7380
leaq -0x219(%rbp), %rdi
callq 0x75c0
jmp 0x38d25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x389b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x7380
leaq -0x149(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x7380
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38a1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x7380
leaq -0x1a1(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38a62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x7380
leaq -0x1c9(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38aa5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x7380
leaq -0x1f1(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38ae8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x7380
leaq -0x219(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
testb $0x1, -0x11(%rbp)
je 0x38b4c
cmpl $0x0, -0xf8(%rbp)
je 0x38b11
cmpl $0x1, -0xf8(%rbp)
jne 0x38b4c
xorps %xmm0, %xmm0
movss %xmm0, -0x90(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x8c(%rbp)
movss 0x2e9b9(%rip), %xmm0    # 0x674e8
movss %xmm0, -0x88(%rbp)
movss 0x2e9a9(%rip), %xmm0    # 0x674e8
movss %xmm0, -0x84(%rbp)
jmp 0x38d23
testb $0x1, -0x11(%rbp)
jne 0x38d0b
cmpl $0x5, -0xf8(%rbp)
je 0x38b6c
cmpl $0x6, -0xf8(%rbp)
jne 0x38d0b
leaq 0x2efa7(%rip), %rsi     # 0x67b1a
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x438(%rbp)
jmp 0x38b85
leaq -0x241(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x7a30
movq -0x438(%rbp), %rsi
movq -0x440(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0x8cf0
jmp 0x38bb4
xorl %eax, %eax
movl %eax, %esi
leaq -0x240(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x444(%rbp)
jmp 0x38bce
movss -0x444(%rbp), %xmm0
movss %xmm0, -0x8c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x7380
leaq -0x241(%rbp), %rdi
callq 0x75c0
leaq 0x2ef21(%rip), %rsi     # 0x67b1e
leaq -0x10(%rbp), %rdi
callq 0x3f910
movq %rax, -0x450(%rbp)
jmp 0x38c0f
leaq -0x269(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0x7a30
movq -0x450(%rbp), %rsi
movq -0x458(%rbp), %rdx
leaq -0x268(%rbp), %rdi
callq 0x8cf0
jmp 0x38c3e
xorl %eax, %eax
movl %eax, %esi
leaq -0x268(%rbp), %rdi
callq 0x3c340
movss %xmm0, -0x45c(%rbp)
jmp 0x38c58
movss -0x45c(%rbp), %xmm0
movss %xmm0, -0x88(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x7380
leaq -0x269(%rbp), %rdi
callq 0x75c0
jmp 0x38d21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38cb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x7380
leaq -0x241(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x38cfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x7380
leaq -0x269(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x120(%rbp)
jmp 0x39245
jmp 0x38d23
jmp 0x38d25
leaq 0x2e96f(%rip), %rdx     # 0x6769b
leaq -0x2a8(%rbp), %rdi
leaq -0x10(%rbp), %rsi
callq 0x3edf0
jmp 0x38d3e
leaq -0x2a8(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
callq 0xde10
jmp 0x38d61
movq -0x278(%rbp), %rsi
leaq -0x2d8(%rbp), %rdi
callq 0xde40
jmp 0x38d76
jmp 0x38d78
leaq -0x2c0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x44270
movb %al, -0x45d(%rbp)
jmp 0x38d93
movb -0x45d(%rbp), %al
testb $0x1, %al
jne 0x38da2
jmp 0x391f5
leaq -0x2c0(%rbp), %rdi
callq 0x442c0
movq %rax, -0x468(%rbp)
jmp 0x38db7
movq -0x468(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2e0(%rbp)
leaq 0x2d933(%rip), %rsi     # 0x66702
leaq -0x2e0(%rbp), %rdi
callq 0x3f240
movq %rax, -0x470(%rbp)
jmp 0x38de4
movq -0x470(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x3e050
movq %rax, -0x478(%rbp)
jmp 0x38e07
leaq -0x309(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x7a30
movq -0x478(%rbp), %rsi
movq -0x480(%rbp), %rdx
leaq -0x300(%rbp), %rdi
callq 0x8cf0
jmp 0x38e36
leaq -0x309(%rbp), %rdi
callq 0x75c0
leaq -0x2e0(%rbp), %rdi
callq 0x3f810
movq %rax, -0x488(%rbp)
jmp 0x38e57
leaq -0x331(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x7a30
movq -0x488(%rbp), %rsi
movq -0x490(%rbp), %rdx
leaq -0x330(%rbp), %rdi
callq 0x8cf0
jmp 0x38e86
leaq -0x331(%rbp), %rdi
callq 0x75c0
leaq -0x348(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x3bcf0
jmp 0x38ea7
movq -0x348(%rbp), %rdi
movq -0x340(%rbp), %rsi
callq 0x3bad0
movb %al, -0x491(%rbp)
jmp 0x38ec2
movb -0x491(%rbp), %al
testb $0x1, %al
jne 0x38ed1
jmp 0x38f69
leaq -0x330(%rbp), %rdi
callq 0x7960
testb $0x1, %al
jne 0x38ee6
jmp 0x38f69
movl $0x3, -0x120(%rbp)
jmp 0x391a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x309(%rbp), %rdi
callq 0x75c0
jmp 0x3925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x391e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x331(%rbp), %rdi
callq 0x75c0
jmp 0x391e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
jmp 0x391db
leaq -0x80(%rbp), %rdi
leaq -0x300(%rbp), %rsi
leaq -0x330(%rbp), %rdx
callq 0x3bbf0
jmp 0x38f82
leaq 0x2eb99(%rip), %rsi     # 0x67b22
leaq -0x300(%rbp), %rdi
callq 0x1cdb0
movb %al, -0x492(%rbp)
jmp 0x38f9d
movb -0x492(%rbp), %al
testb $0x1, %al
jne 0x38fa9
jmp 0x38fc0
leaq -0x68(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x7080
jmp 0x38fbb
jmp 0x39196
leaq 0x2eb60(%rip), %rsi     # 0x67b27
leaq -0x300(%rbp), %rdi
callq 0x1cdb0
movb %al, -0x493(%rbp)
jmp 0x38fdb
movb -0x493(%rbp), %al
testb $0x1, %al
jne 0x38fea
jmp 0x390b7
leaq -0x358(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x3bcf0
jmp 0x38fff
movq -0x358(%rbp), %rdi
movq -0x350(%rbp), %rsi
callq 0x3b770
movl %eax, -0x48(%rbp)
cmpl $-0x1, -0x48(%rbp)
jne 0x390b2
leaq -0x359(%rbp), %rdi
callq 0x3c380
jmp 0x3902d
leaq 0x2eaf9(%rip), %rsi     # 0x67b2d
leaq -0x359(%rbp), %rdi
callq 0x3c3b0
movq %rax, -0x4a0(%rbp)
jmp 0x39049
movq -0x4a0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x3c3f0
movq %rax, -0x4a8(%rbp)
jmp 0x39065
movq -0x4a8(%rbp), %rdi
leaq 0x2d0b5(%rip), %rsi     # 0x66128
callq 0x3c430
jmp 0x3907a
leaq -0x359(%rbp), %rdi
callq 0x3c470
movl $0x0, -0x48(%rbp)
jmp 0x390b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x359(%rbp), %rdi
callq 0x3c470
jmp 0x391db
jmp 0x39194
leaq 0x2ea89(%rip), %rsi     # 0x67b47
leaq -0x300(%rbp), %rdi
callq 0x1cdb0
movb %al, -0x4a9(%rbp)
jmp 0x390d2
movb -0x4a9(%rbp), %al
testb $0x1, %al
jne 0x390de
jmp 0x390f5
leaq -0x40(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x7080
jmp 0x390f0
jmp 0x39192
leaq 0x2ea53(%rip), %rsi     # 0x67b4f
leaq -0x300(%rbp), %rdi
callq 0x1cdb0
movb %al, -0x4aa(%rbp)
jmp 0x39110
movb -0x4aa(%rbp), %al
testb $0x1, %al
jne 0x3911c
jmp 0x39190
leaq -0x390(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x3bcf0
jmp 0x39131
movq -0x390(%rbp), %rsi
movq -0x388(%rbp), %rdx
leaq -0x380(%rbp), %rdi
callq 0x3b970
jmp 0x3914d
leaq -0xb0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x7080
jmp 0x39162
leaq -0x380(%rbp), %rdi
callq 0x7380
jmp 0x39190
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x118(%rbp)
movl %eax, -0x11c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x7380
jmp 0x391db
jmp 0x39192
jmp 0x39194
jmp 0x39196
movl $0x0, -0x120(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x7380
leaq -0x300(%rbp), %rdi
callq 0x7380
movl -0x120(%rbp), %eax
testl %eax, %eax
je 0x391c6
jmp 0x391c4
jmp 0x391c8
jmp 0x391c8
leaq -0x2c0(%rbp), %rdi
callq 0x44360
jmp 0x391d6
jmp 0x38d78
leaq -0x330(%rbp), %rdi
callq 0x7380
leaq -0x300(%rbp), %rdi
callq 0x7380
jmp 0x3925d
testb $0x1, -0x11(%rbp)
je 0x3920e
movq -0x20(%rbp), %rax
addq $0xe0, %rax
movq %rax, -0x4b8(%rbp)
jmp 0x3921f
movq -0x20(%rbp), %rax
addq $0xf8, %rax
movq %rax, -0x4b8(%rbp)
movq -0x4b8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3c4a0
jmp 0x39234
movl $0x0, -0x4(%rbp)
movl $0x1, -0x120(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0xb310
movl -0x4(%rbp), %eax
addq $0x4c0, %rsp            # imm = 0x4C0
popq %rbp
retq
leaq -0xf8(%rbp), %rdi
callq 0xb310
movq -0x118(%rbp), %rdi
callq 0x7a20
nopw %cs:(%rax,%rax)