// File: El-Duder1no[P]geometry/src/main.cpp
// Function: main
int main()
{
    Circle one, two;
    string text, text1;

    cout << "Input format: circle(x y, r)\n";

    cout << "\nEnter the coordinates of the first circle:  ";
    getline(std::cin, text);
    cout << "Enter the coordinates of the second circle: ";
    getline(std::cin, text1);

    bool first = structFill(one, text);
    bool second = structFill(two, text1);
    bool intersec = Intersection(one, two);

    if (first == false or second == false) {
        cout << "\nThe input data is invalid!";

        cout << "\nPress any key to exit\n";
        cin.get();
        return 0;
    }

    cout << "\n1." << text;
    cout << "\n  Area: " << Area(one) << "\n  Perimeter: " << Perimeter(one);
    if (intersec == true) {
        cout << "\nIntersects:\n  2. circle\n";
    } else {
        cout << "\nThe figure doesn't intersect anything\n";
    }

    cout << "\n2." << text1;
    cout << "\n  Area: " << Area(two) << "\n  Perimeter: " << Perimeter(two);
    if (intersec == true) {
        cout << "\nIntersects:\n  1. circle\n";
    } else {
        cout << "\nThe figure doesn't intersect anything\n";
    }

    cout << endl << "Press any key to exit\n";
    cin.get();
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movl $0x0, -0x4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2140
leaq -0x60(%rbp), %rdi
callq 0x2140
movq 0x3bfd(%rip), %rdi      # 0x5fc8
leaq 0x1c32(%rip), %rsi      # 0x4004
callq 0x20f0
jmp 0x23d9
movq 0x3be8(%rip), %rdi      # 0x5fc8
leaq 0x1c3b(%rip), %rsi      # 0x4022
callq 0x20f0
jmp 0x23ee
movq 0x3beb(%rip), %rdi      # 0x5fe0
leaq -0x40(%rbp), %rsi
callq 0x2040
jmp 0x2400
movq 0x3bc1(%rip), %rdi      # 0x5fc8
leaq 0x1c42(%rip), %rsi      # 0x4050
callq 0x20f0
jmp 0x2415
movq 0x3bc4(%rip), %rdi      # 0x5fe0
leaq -0x60(%rbp), %rsi
callq 0x2040
jmp 0x2427
leaq -0x90(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2070
jmp 0x2439
leaq -0x10(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2c40
movb %al, -0x179(%rbp)
jmp 0x2451
leaq -0x90(%rbp), %rdi
callq 0x2090
movb -0x179(%rbp), %al
andb $0x1, %al
movb %al, -0x6d(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2070
jmp 0x247a
leaq -0x1c(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x2c40
movb %al, -0x17a(%rbp)
jmp 0x2492
leaq -0xb8(%rbp), %rdi
callq 0x2090
movb -0x17a(%rbp), %al
andb $0x1, %al
movb %al, -0x91(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0xd0(%rbp)
movq -0x1c(%rbp), %rax
movq %rax, -0xd8(%rbp)
movl -0xc0(%rbp), %eax
movl %eax, -0xe0(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movsd -0xe8(%rbp), %xmm0
movss -0xe0(%rbp), %xmm1
movl -0xd0(%rbp), %eax
movl %eax, -0xf0(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movsd -0xf8(%rbp), %xmm2
movss -0xf0(%rbp), %xmm3
callq 0x3170
movb %al, -0x17b(%rbp)
jmp 0x2535
movb -0x17b(%rbp), %al
andb $0x1, %al
movb %al, -0xb9(%rbp)
movb -0x6d(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x2564
movb -0x91(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x25fd
movq 0x3a5d(%rip), %rdi      # 0x5fc8
leaq 0x1b0b(%rip), %rsi      # 0x407d
callq 0x20f0
jmp 0x2579
movq 0x3a48(%rip), %rdi      # 0x5fc8
leaq 0x1b12(%rip), %rsi      # 0x4099
callq 0x20f0
jmp 0x258e
movq 0x3a4b(%rip), %rdi      # 0x5fe0
callq 0x2120
jmp 0x259c
movl $0x0, -0x4(%rbp)
movl $0x1, -0xfc(%rbp)
jmp 0x292f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x294d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x2090
jmp 0x294d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x2090
jmp 0x294d
movq 0x39c4(%rip), %rdi      # 0x5fc8
leaq 0x1aa6(%rip), %rsi      # 0x40b1
callq 0x20f0
movq %rax, -0x188(%rbp)
jmp 0x2619
movq -0x188(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x20d0
jmp 0x262b
movq 0x3996(%rip), %rdi      # 0x5fc8
leaq 0x1a7c(%rip), %rsi      # 0x40b5
callq 0x20f0
movq %rax, -0x190(%rbp)
jmp 0x2647
movl -0x8(%rbp), %eax
movl %eax, -0x100(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x108(%rbp)
movl -0x100(%rbp), %eax
movl %eax, -0x110(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
movsd -0x118(%rbp), %xmm0
movss -0x110(%rbp), %xmm1
callq 0x2970
movss %xmm0, -0x194(%rbp)
jmp 0x2694
movss -0x194(%rbp), %xmm0
movq -0x190(%rbp), %rdi
callq 0x20a0
movq %rax, -0x1a0(%rbp)
jmp 0x26b1
movq -0x1a0(%rbp), %rdi
leaq 0x1a00(%rip), %rsi      # 0x40bf
callq 0x20f0
movq %rax, -0x1a8(%rbp)
jmp 0x26cd
movl -0x8(%rbp), %eax
movl %eax, -0x120(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x128(%rbp)
movl -0x120(%rbp), %eax
movl %eax, -0x130(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x138(%rbp)
movsd -0x138(%rbp), %xmm0
movss -0x130(%rbp), %xmm1
callq 0x29c0
movss %xmm0, -0x1ac(%rbp)
jmp 0x271a
movss -0x1ac(%rbp), %xmm0
movq -0x1a8(%rbp), %rdi
callq 0x20a0
jmp 0x2730
movb -0xb9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x2757
movq 0x3881(%rip), %rdi      # 0x5fc8
leaq 0x1980(%rip), %rsi      # 0x40ce
callq 0x20f0
jmp 0x2755
jmp 0x276e
movq 0x386a(%rip), %rdi      # 0x5fc8
leaq 0x1983(%rip), %rsi      # 0x40e8
callq 0x20f0
jmp 0x276c
jmp 0x276e
movq 0x3853(%rip), %rdi      # 0x5fc8
leaq 0x1994(%rip), %rsi      # 0x4110
callq 0x20f0
movq %rax, -0x1b8(%rbp)
jmp 0x278a
movq -0x1b8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x20d0
jmp 0x279c
movq 0x3825(%rip), %rdi      # 0x5fc8
leaq 0x190b(%rip), %rsi      # 0x40b5
callq 0x20f0
movq %rax, -0x1c0(%rbp)
jmp 0x27b8
movl -0x14(%rbp), %eax
movl %eax, -0x140(%rbp)
movq -0x1c(%rbp), %rax
movq %rax, -0x148(%rbp)
movl -0x140(%rbp), %eax
movl %eax, -0x150(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0x158(%rbp)
movsd -0x158(%rbp), %xmm0
movss -0x150(%rbp), %xmm1
callq 0x2970
movss %xmm0, -0x1c4(%rbp)
jmp 0x2805
movss -0x1c4(%rbp), %xmm0
movq -0x1c0(%rbp), %rdi
callq 0x20a0
movq %rax, -0x1d0(%rbp)
jmp 0x2822
movq -0x1d0(%rbp), %rdi
leaq 0x188f(%rip), %rsi      # 0x40bf
callq 0x20f0
movq %rax, -0x1d8(%rbp)
jmp 0x283e
movl -0x14(%rbp), %eax
movl %eax, -0x160(%rbp)
movq -0x1c(%rbp), %rax
movq %rax, -0x168(%rbp)
movl -0x160(%rbp), %eax
movl %eax, -0x170(%rbp)
movq -0x168(%rbp), %rax
movq %rax, -0x178(%rbp)
movsd -0x178(%rbp), %xmm0
movss -0x170(%rbp), %xmm1
callq 0x29c0
movss %xmm0, -0x1dc(%rbp)
jmp 0x288b
movss -0x1dc(%rbp), %xmm0
movq -0x1d8(%rbp), %rdi
callq 0x20a0
jmp 0x28a1
movb -0xb9(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0x28c8
movq 0x3710(%rip), %rdi      # 0x5fc8
leaq 0x1855(%rip), %rsi      # 0x4114
callq 0x20f0
jmp 0x28c6
jmp 0x28df
movq 0x36f9(%rip), %rdi      # 0x5fc8
leaq 0x1812(%rip), %rsi      # 0x40e8
callq 0x20f0
jmp 0x28dd
jmp 0x28df
movq 0x36e2(%rip), %rdi      # 0x5fc8
movq 0x36cb(%rip), %rsi      # 0x5fb8
callq 0x2110
movq %rax, -0x1e8(%rbp)
jmp 0x28fb
movq -0x1e8(%rbp), %rdi
leaq 0x1791(%rip), %rsi      # 0x409a
callq 0x20f0
jmp 0x2910
movq 0x36c9(%rip), %rdi      # 0x5fe0
callq 0x2120
jmp 0x291e
movl $0x0, -0x4(%rbp)
movl $0x1, -0xfc(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2090
leaq -0x40(%rbp), %rdi
callq 0x2090
movl -0x4(%rbp), %eax
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
leaq -0x60(%rbp), %rdi
callq 0x2090
leaq -0x40(%rbp), %rdi
callq 0x2090
movq -0x68(%rbp), %rdi
callq 0x2180
nopl (%rax,%rax)