// File: /workspace/github_cpp_makefile_star2_O1/yupyub[P]PathFinding_Visual/main.cpp
// Function: main
int main(){
    Dijkstra D;
    A_Star A;
    DFS F;

    int a,t,m,h,g;
    system("clear");
    printf("Choose the Algorithm\n");
    printf("1. Dijkstra\n2. A Star\n3. DFS\n");
    printf("Write the number : ");
    scanf("%d",&a);
    system("clear");
    printf("Set the ShowSpeed(Microsecond = 1/10^6second)\n");
    printf("<Recommand 10000 ~ 50000 / minimum = 10000>   : ");
    scanf("%d",&t);
    system("clear");
    printf("< Map Size >\n1. 10 x 20\n2. 20 x 50\n3. 40 x 70\n");
    printf("You can add your own map (ex) name : map4.txt)\n"); 
    printf("Choose the map number : ");
    scanf("%d",&m);
    system("clear");
    switch(a){
        case 1:
            D.Dijkstra_Run(t,m);
            break;
        case 2:
            printf("< A Star Algorithm Huristic Function>\n");
            printf("1. Manhattan_Distance * g\n");
            printf("2. Real_Distance * g\n");
            printf("Choose the Huristic Function : ");
            scanf("%d",&h);
            printf("Choose the Weight : ");
            scanf("%d",&g);
            A.A_Star_Run(t,m,h,g);
            break;
        case 3:
            F.DFS_Run(t,m);  
            break;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xea690, %rsp          # imm = 0xEA690
movl $0x0, 0xea66c(%rsp)
leaq 0x2cda(%rip), %rbx      # 0x4004
movq %rbx, %rdi
callq 0x10b0
leaq 0x2d64(%rip), %rdi      # 0x409d
callq 0x1180
leaq 0x2d6d(%rip), %rdi      # 0x40b2
callq 0x1180
leaq 0x2cb9(%rip), %rdi      # 0x400a
xorl %eax, %eax
callq 0x1030
leaq 0x2ef6(%rip), %r15      # 0x4255
leaq 0xc(%rsp), %r14
movq %r15, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x1100
movq %rbx, %rdi
callq 0x10b0
leaq 0x2d4f(%rip), %rdi      # 0x40cf
callq 0x1180
leaq 0x2c92(%rip), %rdi      # 0x401e
xorl %eax, %eax
callq 0x1030
leaq 0x4(%rsp), %rsi
movq %r15, %rdi
xorl %eax, %eax
callq 0x1100
movq %rbx, %rdi
callq 0x10b0
leaq 0x2d4c(%rip), %rdi      # 0x40fd
callq 0x1180
leaq 0x2d6e(%rip), %rdi      # 0x412b
callq 0x1180
leaq 0x2c86(%rip), %rdi      # 0x404f
xorl %eax, %eax
callq 0x1030
movq %rsp, %rsi
movq %r15, %rdi
xorl %eax, %eax
callq 0x1100
movq %rbx, %rdi
callq 0x10b0
movl (%r14), %eax
cmpl $0x3, %eax
je 0x149c
cmpl $0x2, %eax
je 0x1415
cmpl $0x1, %eax
jne 0x14ad
movl 0x4(%rsp), %esi
movl (%rsp), %edx
leaq 0x10(%rsp), %rdi
callq 0x16a6
jmp 0x14ad
leaq 0x2d3e(%rip), %rdi      # 0x415a
callq 0x1180
leaq 0x2d58(%rip), %rdi      # 0x4180
callq 0x1180
leaq 0x2d66(%rip), %rdi      # 0x419a
callq 0x1180
leaq 0x2c28(%rip), %rdi      # 0x4068
xorl %eax, %eax
callq 0x1030
leaq 0x2e07(%rip), %rbx      # 0x4255
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x1100
leaq 0x2c21(%rip), %rdi      # 0x4088
xorl %eax, %eax
callq 0x1030
leaq 0x8(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x1100
movl 0x4(%rsp), %esi
movl (%rsp), %edx
movl (%r14), %ecx
movl (%r15), %r8d
leaq 0x75354(%rsp), %rdi
callq 0x2078
jmp 0x14ad
movl 0x4(%rsp), %esi
movl (%rsp), %edx
leaq 0x10(%rsp), %rdi
callq 0x279a
xorl %eax, %eax
addq $0xea690, %rsp          # imm = 0xEA690
popq %rbx
popq %r14
popq %r15
retq