// File: /workspace/github_cpp_makefile_star2_O2/davidjosepha[P]slitherlink/src/generator/main.cpp
// Function: main
int main(int argc, char * argv[]) {
    clock_t startTime, endTime;

    if (argc == 4) {
        std::istringstream mn(argv[1]);
        std::istringstream nn(argv[2]);
        std::istringstream difficn(argv[3]);
        int m, n;
        std::string difficstr;
        assert(mn >> m && mn.eof());
        assert(nn >> n && nn.eof());
        assert(difficn >> difficstr && difficn.eof());

        Difficulty diffic = (difficstr == "e") ? EASY : HARD;

        startTime = clock();
        Generator g = Generator(m, n, diffic); //one square for left/right top/bottom boundries

        endTime = clock();
        float diff = ((float)endTime - (float)startTime) / CLOCKS_PER_SEC;
        std::cout << "Time to create:\t" << diff << " seconds" << std::endl;

        return EXIT_SUCCESS;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x5f0, %rsp            # imm = 0x5F0
cmpl $0x4, %edi
jne 0x9c53
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq -0x338(%rbp), %rdi
leaq -0x1b8(%rbp), %rdx
callq 0x20b0
leaq -0x600(%rbp), %rdi
leaq -0x338(%rbp), %rsi
pushq $0x8
popq %rdx
callq 0x2240
leaq -0x338(%rbp), %rdi
callq 0x20c0
movq 0x10(%rbx), %rsi
leaq -0x1b8(%rbp), %rdi
leaq -0x480(%rbp), %rdx
callq 0x20b0
leaq -0x338(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
pushq $0x8
popq %rdx
callq 0x2240
leaq -0x1b8(%rbp), %rdi
callq 0x20c0
movq 0x18(%rbx), %rsi
leaq -0x480(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x20b0
leaq -0x1b8(%rbp), %rdi
leaq -0x480(%rbp), %rsi
pushq $0x8
popq %rdx
callq 0x2240
leaq -0x480(%rbp), %rdi
callq 0x20c0
leaq -0x28(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x600(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x2110
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x9c61
movq -0x600(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x5e0(%rbp,%rax)
je 0x9c61
leaq -0x338(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x2110
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x9c7a
movq -0x338(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x318(%rbp,%rax)
je 0x9c7a
leaq -0x1b8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x21d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x9c93
movq -0x1b8(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x198(%rbp,%rax)
je 0x9c93
leaq 0xc8e(%rip), %rsi       # 0xa82c
leaq -0x38(%rbp), %rdi
callq 0x9d3d
xorb $0x1, %al
movzbl %al, %r14d
callq 0x2130
movq %rax, %rbx
movl -0x18(%rbp), %esi
movl -0x14(%rbp), %edx
leaq -0x480(%rbp), %rdi
movl %r14d, %ecx
callq 0x7fc4
callq 0x2130
movq %rax, %r14
movq 0x53ff(%rip), %rdi      # 0xefd8
leaq 0xc4e(%rip), %rsi       # 0xa82e
callq 0x21a0
cvtsi2ss %r14, %xmm0
cvtsi2ss %rbx, %xmm1
subss %xmm1, %xmm0
divss 0xbb1(%rip), %xmm0      # 0xa7ac
movq %rax, %rdi
callq 0x2140
leaq 0xc35(%rip), %rsi       # 0xa83f
movq %rax, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20e0
leaq -0x480(%rbp), %rdi
callq 0x9d4e
leaq -0x38(%rbp), %rdi
callq 0x20c0
leaq -0x1b8(%rbp), %rdi
callq 0x20d0
leaq -0x338(%rbp), %rdi
callq 0x20d0
leaq -0x600(%rbp), %rdi
callq 0x20d0
xorl %eax, %eax
addq $0x5f0, %rsp            # imm = 0x5F0
popq %rbx
popq %r14
popq %rbp
retq
leaq 0xb48(%rip), %rdi       # 0xa7b0
leaq 0xb55(%rip), %rsi       # 0xa7c4
leaq 0xb65(%rip), %rcx       # 0xa7db
pushq $0x13
jmp 0x9caa
leaq 0xb71(%rip), %rdi       # 0xa7f2
leaq 0xb3c(%rip), %rsi       # 0xa7c4
leaq 0xb4c(%rip), %rcx       # 0xa7db
pushq $0x14
jmp 0x9caa
leaq 0xb6c(%rip), %rdi       # 0xa806
leaq 0xb23(%rip), %rsi       # 0xa7c4
leaq 0xb33(%rip), %rcx       # 0xa7db
pushq $0x15
popq %rdx
callq 0x2120
jmp 0x9cf4
movq %rax, %rbx
leaq -0x480(%rbp), %rdi
callq 0x20c0
jmp 0x9d1d
movq %rax, %rbx
jmp 0x9d1d
movq %rax, %rbx
leaq -0x1b8(%rbp), %rdi
callq 0x20c0
jmp 0x9d29
movq %rax, %rbx
jmp 0x9d29
movq %rax, %rbx
leaq -0x338(%rbp), %rdi
callq 0x20c0
jmp 0x9d35
movq %rax, %rbx
jmp 0x9d35
movq %rax, %rbx
jmp 0x9d08
movq %rax, %rbx
leaq -0x480(%rbp), %rdi
callq 0x9d4e
leaq -0x38(%rbp), %rdi
callq 0x20c0
leaq -0x1b8(%rbp), %rdi
callq 0x20d0
leaq -0x338(%rbp), %rdi
callq 0x20d0
leaq -0x600(%rbp), %rdi
callq 0x20d0
movq %rbx, %rdi
callq 0x2250