// File: /workspace/github_cpp_makefile_star2_O1/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 0xec3c
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 0xe998
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 0xe9dc
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 0xea1d
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 0xec4c
movq -0x608(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x5e8(%rbp,%rax)
je 0xec4c
leaq -0x488(%rbp), %rdi
leaq -0x1c(%rbp), %rsi
callq 0x20f0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xec6b
movq -0x488(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x468(%rbp,%rax)
je 0xec6b
leaq -0x1c0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x21d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xec8a
movq -0x1c0(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x1a0(%rbp,%rax)
je 0xec8a
leaq 0xd7b(%rip), %rsi       # 0xf864
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 0xca68
callq 0x2110
movq %rax, %r14
movq 0x44b1(%rip), %rdi      # 0x12fd8
leaq 0xd38(%rip), %rsi       # 0xf866
movl $0x10, %edx
callq 0x21c0
cvtsi2ss %r14, %xmm0
cvtsi2ss %rbx, %xmm1
subss %xmm1, %xmm0
divss 0xc96(%rip), %xmm0      # 0xf7e4
cvtss2sd %xmm0, %xmm0
movq 0x447f(%rip), %rdi      # 0x12fd8
callq 0x2220
movq %rax, %rbx
leaq 0xd0f(%rip), %rsi       # 0xf877
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 0xebad
callq 0x2180
movq -0x210(%rbp), %rdi
testq %rdi, %rdi
je 0xebbe
callq 0x2180
leaq -0x268(%rbp), %rdi
callq 0x2a40
leaq -0x2c0(%rbp), %rdi
callq 0x2a40
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0xebe4
callq 0x2180
movq 0x43e5(%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 0xb95(%rip), %rdi       # 0xf7e8
leaq 0xba2(%rip), %rsi       # 0xf7fc
leaq 0xbb2(%rip), %rcx       # 0xf813
movl $0x13, %edx
callq 0x2100
leaq 0xbb8(%rip), %rdi       # 0xf82a
leaq 0xb83(%rip), %rsi       # 0xf7fc
leaq 0xb93(%rip), %rcx       # 0xf813
movl $0x14, %edx
callq 0x2100
leaq 0xbad(%rip), %rdi       # 0xf83e
leaq 0xb64(%rip), %rsi       # 0xf7fc
leaq 0xb74(%rip), %rcx       # 0xf813
movl $0x15, %edx
callq 0x2100
jmp 0xed23
movq %rax, %rbx
leaq -0x2f8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed64
callq 0x2180
jmp 0xed64
movq %rax, %rbx
jmp 0xed64
movq %rax, %rbx
leaq -0x1b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed83
callq 0x2180
jmp 0xed83
movq %rax, %rbx
jmp 0xed83
movq %rax, %rbx
leaq -0x478(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeda2
callq 0x2180
jmp 0xeda2
movq %rax, %rbx
jmp 0xeda2
movq %rax, %rbx
jmp 0xed37
movq %rax, %rbx
leaq -0x308(%rbp), %rdi
callq 0xedaa
movq -0x40(%rbp), %rdi
cmpq %r15, %rdi
je 0xed45
callq 0x2180
movq 0x4284(%rip), %rsi      # 0x12fd0
leaq -0x1c0(%rbp), %rdi
callq 0x21f0
leaq -0x148(%rbp), %rdi
callq 0x20a0
movq 0x4265(%rip), %rsi      # 0x12fd0
leaq -0x488(%rbp), %rdi
callq 0x21f0
leaq -0x410(%rbp), %rdi
callq 0x20a0
movq 0x4246(%rip), %rsi      # 0x12fd0
leaq -0x608(%rbp), %rdi
callq 0x21f0
leaq -0x590(%rbp), %rdi
callq 0x20a0
movq %rbx, %rdi
callq 0x2260