// File: TheiaRT[P]libiris/sampleclient.cpp
// Function: main
int main() {
    std::string input;
    TCPClient client;
    while (getline(std::cin, input)) {
        if (client.connect("localhost", 8000) == false) {
            std::cerr << "Could not connect :(" << std::endl;
            return 1;
        }
        if (client.send_data(input) == false) {
            std::cerr << "Could not send data :(" << std::endl;
            return 2;
        }
        std::cout << client.receive() << std::endl;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movl $0x0, -0x4(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2270
leaq -0x3c(%rbp), %rdi
callq 0x2490
jmp 0x2b96
jmp 0x2b98
movq 0x2439(%rip), %rdi      # 0x4fd8
leaq -0x28(%rbp), %rsi
callq 0x2060
movq %rax, -0xc0(%rbp)
jmp 0x2bb1
movq -0xc0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2250
movb %al, -0xc1(%rbp)
jmp 0x2bcf
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0x2bde
jmp 0x2e04
leaq -0x71(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x22d0
movq -0xd0(%rbp), %rdx
leaq 0x494(%rip), %rsi       # 0x3090
leaq -0x70(%rbp), %rdi
callq 0x2820
jmp 0x2c07
leaq -0x3c(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x1f40, %edx           # imm = 0x1F40
callq 0x24b0
movb %al, -0xd1(%rbp)
jmp 0x2c21
movb -0xd1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0xd8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x2110
leaq -0x71(%rbp), %rdi
callq 0x21f0
movl -0xd8(%rbp), %eax
cmpl $0x0, %eax
jne 0x2cd9
movq 0x2396(%rip), %rdi      # 0x4ff0
leaq 0x439(%rip), %rsi       # 0x309a
callq 0x21b0
movq %rax, -0xe0(%rbp)
jmp 0x2c6f
movq -0xe0(%rbp), %rdi
movq 0x233b(%rip), %rsi      # 0x4fb8
callq 0x21d0
jmp 0x2c84
movl $0x1, -0x4(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x2e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2e27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x2110
leaq -0x71(%rbp), %rdi
callq 0x21f0
jmp 0x2e27
leaq -0x98(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x20c0
jmp 0x2ceb
leaq -0x3c(%rbp), %rdi
leaq -0x98(%rbp), %rsi
movl $0x200, %edx            # imm = 0x200
callq 0x2600
movb %al, -0xe1(%rbp)
jmp 0x2d08
movb -0xe1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0xe8(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x2110
movl -0xe8(%rbp), %eax
cmpl $0x0, %eax
jne 0x2d91
movq 0x22b9(%rip), %rdi      # 0x4ff0
leaq 0x371(%rip), %rsi       # 0x30af
callq 0x21b0
movq %rax, -0xf0(%rbp)
jmp 0x2d4c
movq -0xf0(%rbp), %rdi
movq 0x225e(%rip), %rsi      # 0x4fb8
callq 0x21d0
jmp 0x2d61
movl $0x2, -0x4(%rbp)
movl $0x1, -0x78(%rbp)
jmp 0x2e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x2110
jmp 0x2e27
leaq -0xb8(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
movl $0x200, %edx            # imm = 0x200
callq 0x2680
jmp 0x2da8
movq 0x2219(%rip), %rdi      # 0x4fc8
leaq -0xb8(%rbp), %rsi
callq 0x2190
movq %rax, -0xf8(%rbp)
jmp 0x2dc4
movq -0xf8(%rbp), %rdi
movq 0x21e6(%rip), %rsi      # 0x4fb8
callq 0x21d0
jmp 0x2dd9
leaq -0xb8(%rbp), %rdi
callq 0x2110
jmp 0x2b98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x2110
jmp 0x2e27
movl $0x0, -0x4(%rbp)
movl $0x1, -0x78(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2110
movl -0x4(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x2110
movq -0x48(%rbp), %rdi
callq 0x22c0