// File: /workspace/github_cpp_makefile_star2_O2/FFY00[P]uicc/include/uicc.h
// Function: UICC::send_check(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool send_check( string in, string out) {
        Assert( write(in) == (int)in.size(), "");
        string answer=read(out.size());

        if (answer.size() != out.size()) {
            printf("ret is not right size\n");
            dump_hex("expect", out);
            dump_hex("answer", answer);
            return false;
        }

        if ( answer != out) {
            printf("BAD return code\n");
            string answer2=read(255);
            dump_hex("Expected: ", out);
            dump_hex("got answer: ", answer+answer2);
            return false;
        }

        return true;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x170, %rsp            # imm = 0x170
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
leaq -0x108(%rbp), %r12
movq %r12, %rdi
callq 0x2330
movq %r14, %rdi
movq %r12, %rsi
callq 0xb178
movl %eax, %r12d
movl 0x8(%r15), %r15d
leaq -0x108(%rbp), %rdi
callq 0x2120
cmpl %r15d, %r12d
jne 0xb642
movq 0x8(%rbx), %rdx
leaq -0x68(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0xac6e
movq 0x8(%r15), %rax
cmpq 0x8(%rbx), %rax
jne 0xb578
leaq -0x68(%rbp), %rdi
movq %rbx, %rsi
callq 0xa602
movb $0x1, %r15b
testb %al, %al
je 0xb626
leaq 0x8b50(%rip), %rdi      # 0x14006
callq 0x23c0
leaq -0x48(%rbp), %rdi
movl $0xff, %edx
movq %r14, %rsi
callq 0xac6e
leaq 0x8291(%rip), %rsi      # 0x13764
leaq -0xa8(%rbp), %rdi
leaq -0x21(%rbp), %rdx
callq 0x20f0
leaq -0x148(%rbp), %rdi
movq %rbx, %rsi
callq 0x2330
leaq -0xa8(%rbp), %rbx
leaq -0x148(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7a66
movq %r14, %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2120
leaq 0x824d(%rip), %rsi      # 0x1376f
leaq -0x88(%rbp), %rdi
leaq -0x21(%rbp), %rdx
callq 0x20f0
leaq -0x128(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x48(%rbp), %rdx
callq 0xb708
leaq -0x88(%rbp), %rbx
leaq -0x128(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7a66
movq %r14, %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2120
leaq -0x48(%rbp), %rdi
jmp 0xb61e
leaq 0x8a97(%rip), %rdi      # 0x14016
callq 0x23c0
leaq 0x81d2(%rip), %rsi      # 0x1375d
leaq -0xe8(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x20f0
leaq -0x188(%rbp), %rdi
movq %rbx, %rsi
callq 0x2330
leaq -0xe8(%rbp), %rbx
leaq -0x188(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7a66
movq %r14, %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2120
leaq 0x7a48(%rip), %rsi      # 0x13022
leaq -0xc8(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x20f0
leaq -0x168(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2330
leaq -0xc8(%rbp), %rbx
leaq -0x168(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7a66
movq %r14, %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2120
xorl %r15d, %r15d
leaq -0x68(%rbp), %rdi
callq 0x2120
movl %r15d, %eax
addq $0x170, %rsp            # imm = 0x170
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0xd987(%rip), %r14      # 0x18fd0
movq (%r14), %rbx
callq 0x2040
movl (%rax), %edi
callq 0x20c0
leaq 0x807d(%rip), %rsi      # 0x136dc
leaq 0x80ec(%rip), %rdx      # 0x13752
leaq 0x7e1f(%rip), %rcx      # 0x1348c
movq %rbx, %rdi
movl $0x150, %r8d            # imm = 0x150
movq %rax, %r9
xorl %eax, %eax
callq 0x2360
movq 0xd921(%rip), %rax      # 0x18fa8
movq (%rax), %rdi
callq 0x22c0
movq (%r14), %rdi
callq 0x22c0
pushq $0x1
popq %rdi
callq 0x22e0
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
jmp 0xb6b7
jmp 0xb6be
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
callq 0x2120
jmp 0xb6c1
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
jmp 0xb6e1
jmp 0xb6e8
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
jmp 0xb6e1
jmp 0xb6e8
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x2120
jmp 0xb6eb
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
jmp 0xb6fb
movq %rax, %rbx
leaq -0x108(%rbp), %rdi
callq 0x2120
movq %rbx, %rdi
callq 0x2400