// File: 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 %rbp
movq %rsp, %rbp
subq $0x15f9f0, %rsp         # imm = 0x15F9F0
movl $0x0, -0x4(%rbp)
leaq -0xea67c(%rbp), %rdi
callq 0x2650
leaq 0x7bdf(%rip), %rdi      # 0xa004
movq %rdi, -0x15f9e0(%rbp)
callq 0x2140
leaq 0x7bd2(%rip), %rdi      # 0xa00a
xorl %eax, %eax
movb %al, -0x15f9e1(%rbp)
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7bce(%rip), %rdi      # 0xa020
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7bda(%rip), %rdi      # 0xa03e
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7df7(%rip), %rdi      # 0xa26d
movq %rdi, -0x15f9f0(%rbp)
leaq -0x15f9c4(%rbp), %rsi
callq 0x21e0
movq -0x15f9e0(%rbp), %rdi
callq 0x2140
movb -0x15f9e1(%rbp), %al
leaq 0x7bb0(%rip), %rdi      # 0xa052
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7bcd(%rip), %rdi      # 0xa081
callq 0x2030
movq -0x15f9f0(%rbp), %rdi
movb -0x15f9e1(%rbp), %al
leaq -0x15f9c8(%rbp), %rsi
callq 0x21e0
movq -0x15f9e0(%rbp), %rdi
callq 0x2140
movb -0x15f9e1(%rbp), %al
leaq 0x7bc7(%rip), %rdi      # 0xa0b2
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7be4(%rip), %rdi      # 0xa0e1
callq 0x2030
movb -0x15f9e1(%rbp), %al
leaq 0x7c02(%rip), %rdi      # 0xa111
callq 0x2030
movq -0x15f9f0(%rbp), %rdi
movb -0x15f9e1(%rbp), %al
leaq -0x15f9cc(%rbp), %rsi
callq 0x21e0
movq -0x15f9e0(%rbp), %rdi
callq 0x2140
movl -0x15f9c4(%rbp), %eax
movl %eax, -0x15f9d8(%rbp)
subl $0x1, %eax
je 0x256d
jmp 0x254c
movl -0x15f9d8(%rbp), %eax
subl $0x2, %eax
je 0x258a
jmp 0x2559
movl -0x15f9d8(%rbp), %eax
subl $0x3, %eax
je 0x2621
jmp 0x2639
movl -0x15f9c8(%rbp), %esi
movl -0x15f9cc(%rbp), %edx
leaq -0x75340(%rbp), %rdi
callq 0x2950
jmp 0x2639
leaq 0x7b99(%rip), %rdi      # 0xa12a
movb $0x0, %al
callq 0x2030
leaq 0x7bb2(%rip), %rdi      # 0xa151
movb $0x0, %al
callq 0x2030
leaq 0x7bbf(%rip), %rdi      # 0xa16c
movb $0x0, %al
callq 0x2030
leaq 0x7bc7(%rip), %rdi      # 0xa182
movb $0x0, %al
callq 0x2030
leaq 0x7ca4(%rip), %rdi      # 0xa26d
leaq -0x15f9d0(%rbp), %rsi
movb $0x0, %al
callq 0x21e0
leaq 0x7bc4(%rip), %rdi      # 0xa1a2
movb $0x0, %al
callq 0x2030
leaq 0x7c81(%rip), %rdi      # 0xa26d
leaq -0x15f9d4(%rbp), %rsi
movb $0x0, %al
callq 0x21e0
movl -0x15f9c8(%rbp), %esi
movl -0x15f9cc(%rbp), %edx
movl -0x15f9d0(%rbp), %ecx
movl -0x15f9d4(%rbp), %r8d
leaq -0xea67c(%rbp), %rdi
callq 0x5210
jmp 0x2639
movl -0x15f9c8(%rbp), %esi
movl -0x15f9cc(%rbp), %edx
leaq -0x15f9c0(%rbp), %rdi
callq 0x5ef0
movl -0x4(%rbp), %eax
addq $0x15f9f0, %rsp         # imm = 0x15F9F0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop