// File: /workspace/github_cpp_makefile_star2_O3/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 %r15
pushq %r14
pushq %rbx
subq $0x5f8, %rsp            # imm = 0x5F8
cmpl $0x4, %edi
jne 0xec88
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq -0x488(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x20c0
leaq -0x608(%rbp), %rdi
leaq -0x488(%rbp), %rsi
movl $0x8, %edx
callq 0x2250
leaq -0x478(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe9e4
callq 0x2180
movq 0x10(%rbx), %rsi
leaq -0x1c0(%rbp), %rdi
leaq -0x308(%rbp), %rdx
callq 0x20c0
leaq -0x488(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
movl $0x8, %edx
callq 0x2250
leaq -0x1b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea28
callq 0x2180
movq 0x18(%rbx), %rsi
leaq -0x308(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x20c0
leaq -0x1c0(%rbp), %rdi
leaq -0x308(%rbp), %rsi
movl $0x8, %edx
callq 0x2250
leaq -0x2f8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea69
callq 0x2180
leaq -0x30(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq -0x608(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x20f0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xec98
movq -0x608(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x5e8(%rbp,%rax)
je 0xec98
leaq -0x488(%rbp), %rdi
leaq -0x1c(%rbp), %rsi
callq 0x20f0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xecb7
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
je 0xecb7
leaq -0x1c0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x21d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xecd6
movq -0x1c0(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x1a0(%rbp,%rax)
je 0xecd6
leaq 0xd3f(%rip), %rsi       # 0xf874
leaq -0x40(%rbp), %rdi
callq 0x2090
xorl %r14d, %r14d
testl %eax, %eax
setne %r14b
callq 0x2110
movq %rax, %rbx
movl -0x20(%rbp), %esi
movl -0x1c(%rbp), %edx
leaq -0x308(%rbp), %rdi
movl %r14d, %ecx
callq 0xcaa8
callq 0x2110
movq %rax, %r14
movq 0x4465(%rip), %rdi      # 0x12fd8
leaq 0xcfc(%rip), %rsi       # 0xf876
movl $0x10, %edx
callq 0x21c0
cvtsi2ss %r14, %xmm0
cvtsi2ss %rbx, %xmm1
subss %xmm1, %xmm0
divss 0xc5a(%rip), %xmm0      # 0xf7f4
cvtss2sd %xmm0, %xmm0
movq 0x4433(%rip), %rdi      # 0x12fd8
callq 0x2220
movq %rax, %rbx
leaq 0xcd3(%rip), %rsi       # 0xf887
movl $0x8, %edx
movq %rax, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
movq -0x1f8(%rbp), %rdi
testq %rdi, %rdi
je 0xebf9
callq 0x2180
movq -0x210(%rbp), %rdi
testq %rdi, %rdi
je 0xec0a
callq 0x2180
leaq -0x268(%rbp), %rdi
callq 0x2a54
leaq -0x2c0(%rbp), %rdi
callq 0x2a54
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0xec30
callq 0x2180
movq 0x4399(%rip), %rbx      # 0x12fd0
leaq -0x1c0(%rbp), %rdi
movq %rbx, %rsi
callq 0x21f0
leaq -0x148(%rbp), %rdi
callq 0x20a0
leaq -0x488(%rbp), %rdi
movq %rbx, %rsi
callq 0x21f0
leaq -0x410(%rbp), %rdi
callq 0x20a0
leaq -0x608(%rbp), %rdi
movq %rbx, %rsi
callq 0x21f0
leaq -0x590(%rbp), %rdi
callq 0x20a0
xorl %eax, %eax
addq $0x5f8, %rsp            # imm = 0x5F8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0xb59(%rip), %rdi       # 0xf7f8
leaq 0xb66(%rip), %rsi       # 0xf80c
leaq 0xb76(%rip), %rcx       # 0xf823
movl $0x13, %edx
callq 0x2100
leaq 0xb7c(%rip), %rdi       # 0xf83a
leaq 0xb47(%rip), %rsi       # 0xf80c
leaq 0xb57(%rip), %rcx       # 0xf823
movl $0x14, %edx
callq 0x2100
leaq 0xb71(%rip), %rdi       # 0xf84e
leaq 0xb28(%rip), %rsi       # 0xf80c
leaq 0xb38(%rip), %rcx       # 0xf823
movl $0x15, %edx
callq 0x2100
jmp 0xed6f
movq %rax, %rbx
leaq -0x2f8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xedb0
callq 0x2180
jmp 0xedb0
movq %rax, %rbx
jmp 0xedb0
movq %rax, %rbx
leaq -0x1b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xedcf
callq 0x2180
jmp 0xedcf
movq %rax, %rbx
jmp 0xedcf
movq %rax, %rbx
leaq -0x478(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xedee
callq 0x2180
jmp 0xedee
movq %rax, %rbx
jmp 0xedee
movq %rax, %rbx
jmp 0xed83
movq %rax, %rbx
leaq -0x308(%rbp), %rdi
callq 0xedf6
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0xed91
callq 0x2180
movq 0x4238(%rip), %rsi      # 0x12fd0
leaq -0x1c0(%rbp), %rdi
callq 0x21f0
leaq -0x148(%rbp), %rdi
callq 0x20a0
movq 0x4219(%rip), %rsi      # 0x12fd0
leaq -0x488(%rbp), %rdi
callq 0x21f0
leaq -0x410(%rbp), %rdi
callq 0x20a0
movq 0x41fa(%rip), %rsi      # 0x12fd0
leaq -0x608(%rbp), %rdi
callq 0x21f0
leaq -0x590(%rbp), %rdi
callq 0x20a0
movq %rbx, %rdi
callq 0x2260