// File: 0x0584[P]scmin-plus/src/sexpr/types.cpp
// Function: sexpr::sexpr_lambda::bindargs(std::shared_ptr<sexpr> const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<sexpr>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::shared_ptr<sexpr>>>>&)
bool sexpr::sexpr_lambda::bindargs(const sexpr_t& args, env_t& parent) {
    auto u = this->args, v = args;

    if (u->length() != v->length()) {
        cerr << "argument count mismatched, expected "
             << u->length() << "got " << v->length()
             << endl;
        return false;
    }

    local = parent;
    while (not u->isnil()) {
        if (not u->car()->issymb()) {
            cerr << "Err: argument is not a symbol" << endl;
            return false;
        }
        local[any_cast<sexpr_text>(*u->car()->blob).text()] = v->car();
        u = u->cdr(); v = v->cdr();
    }
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x100(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x43d0
movq -0x18(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x43d0
movq -0xf8(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x75d0
movq %rax, -0xf0(%rbp)
jmp 0x3c3c
leaq -0x40(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x75d0
movq %rax, -0x108(%rbp)
jmp 0x3c56
movq -0xf0(%rbp), %rax
movq -0x108(%rbp), %rcx
cmpq %rcx, %rax
je 0x3d47
movq 0x2a37c(%rip), %rdi     # 0x2dff0
leaq 0x1d3a1(%rip), %rsi     # 0x2101c
callq 0x32c0
movq %rax, -0x110(%rbp)
jmp 0x3c89
leaq -0x30(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x75d0
movq %rax, -0x118(%rbp)
jmp 0x3ca3
movq -0x118(%rbp), %rsi
movq -0x110(%rbp), %rdi
callq 0x30b0
movq %rax, -0x120(%rbp)
jmp 0x3cbf
movq -0x120(%rbp), %rdi
leaq 0x1d374(%rip), %rsi     # 0x21041
callq 0x32c0
movq %rax, -0x128(%rbp)
jmp 0x3cdb
leaq -0x40(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x75d0
movq %rax, -0x130(%rbp)
jmp 0x3cf5
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdi
callq 0x30b0
movq %rax, -0x138(%rbp)
jmp 0x3d11
movq -0x138(%rbp), %rdi
movq 0x2a271(%rip), %rsi     # 0x2df90
callq 0x32f0
jmp 0x3d26
movb $0x0, -0x1(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x400c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x402c
movq -0x100(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x20, %rdi
callq 0x4470
jmp 0x3d5d
jmp 0x3d5f
leaq -0x30(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x7270
movb %al, -0x139(%rbp)
jmp 0x3d78
movb -0x139(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3d89
jmp 0x4001
leaq -0x30(%rbp), %rdi
callq 0x4400
movq %rax, %rsi
leaq -0x60(%rbp), %rdi
callq 0xb520
jmp 0x3da0
leaq -0x60(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x7500
movb %al, -0x13a(%rbp)
jmp 0x3db9
movb -0x13a(%rbp), %al
xorb $-0x1, %al
movb %al, -0x13b(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4450
movb -0x13b(%rbp), %al
testb $0x1, %al
jne 0x3ddc
jmp 0x3e37
movq 0x2a20d(%rip), %rdi     # 0x2dff0
leaq 0x1d25c(%rip), %rsi     # 0x21046
callq 0x32c0
movq %rax, -0x148(%rbp)
jmp 0x3df8
movq -0x148(%rbp), %rdi
movq 0x2a18a(%rip), %rsi     # 0x2df90
callq 0x32f0
jmp 0x3e0d
movb $0x0, -0x1(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x400c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4450
jmp 0x402c
leaq -0x40(%rbp), %rdi
callq 0x4400
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
callq 0xb520
jmp 0x3e4e
movq -0x100(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x150(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4400
movq %rax, %rsi
leaq -0xc8(%rbp), %rdi
callq 0xb520
jmp 0x3e7a
leaq -0xc8(%rbp), %rdi
callq 0x4400
movq %rax, %rdi
callq 0x4520
movq %rax, -0x158(%rbp)
jmp 0x3e97
movq -0x158(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x44d0
jmp 0x3eac
leaq -0x90(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3a60
jmp 0x3ec1
movq -0x150(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x44a0
movq %rax, -0x160(%rbp)
jmp 0x3edd
movq -0x160(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movq %rsi, -0x168(%rbp)
callq 0x4420
leaq -0x90(%rbp), %rdi
callq 0x31d0
leaq -0xb8(%rbp), %rdi
callq 0x4550
leaq -0xc8(%rbp), %rdi
callq 0x4450
movq -0x168(%rbp), %rdi
callq 0x4450
leaq -0x30(%rbp), %rdi
callq 0x4400
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0xb440
jmp 0x3f3e
leaq -0x30(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movq %rsi, -0x170(%rbp)
callq 0x4420
movq -0x170(%rbp), %rdi
callq 0x4450
leaq -0x40(%rbp), %rdi
callq 0x4400
movq %rax, %rsi
leaq -0xe8(%rbp), %rdi
callq 0xb440
jmp 0x3f7b
leaq -0x40(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x4420
leaq -0xe8(%rbp), %rdi
callq 0x4450
jmp 0x3d5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3ff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3fea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x3fde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x31d0
leaq -0xb8(%rbp), %rdi
callq 0x4550
leaq -0xc8(%rbp), %rdi
callq 0x4450
leaq -0x70(%rbp), %rdi
callq 0x4450
jmp 0x402c
movb $0x1, -0x1(%rbp)
movl $0x1, -0x50(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x4450
leaq -0x30(%rbp), %rdi
callq 0x4450
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x4450
leaq -0x30(%rbp), %rdi
callq 0x4450
movq -0x48(%rbp), %rdi
callq 0x34f0
nopw (%rax,%rax)