// File: /workspace/github_c_makefile_star2_O1/wjmelements[P]evm/src/dio.c
// Function: loadConfig
void loadConfig(const char *_configFile, int updateConfigFile) {
    if (_configFile != NULL) {
        int fd = open(_configFile, O_RDONLY);
        if (fd == -1) {
            perror(_configFile);
            _exit(1);
        }

        struct stat fstatus;
        int fstatSuccess = fstat(fd, &fstatus);
        if (fstatSuccess == -1) {
            perror(_configFile);
            _exit(1);
        }
        char *configContents = mmap(NULL, fstatus.st_size, PROT_READ, MAP_PRIVATE | MAP_FILE, fd, 0);
        {
            uint64_t prevLineNumber = lineNumber;
            struct testResults results = testResults;

            applyConfig(configContents);
            if (updateConfigFile) {
                updateConfig(configContents, _configFile);
            }

            lineNumber = prevLineNumber;
            testResults = results;
        }
        munmap(configContents, fstatus.st_size);
        close(fd);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
testq %rdi, %rdi
je 0x7372
movl %esi, %ebx
movq %rdi, %r14
xorl %esi, %esi
xorl %eax, %eax
callq 0x3250
cmpl $-0x1, %eax
je 0x7384
movl %eax, %ebp
leaq 0x48(%rsp), %rsi
movl %eax, %edi
callq 0x32a0
cmpl $-0x1, %eax
je 0x738c
movq 0x78(%rsp), %rsi
xorl %edi, %edi
movl $0x1, %edx
movl $0x2, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x30d0
movq %rax, %r12
movq 0x1a91b(%rip), %rax     # 0x21a48
movq %rax, 0x28(%rsp)
movups 0x1a8ff(%rip), %xmm0    # 0x21a38
movaps %xmm0, 0x30(%rsp)
movq %r12, %rdi
callq 0x4ce0
testl %ebx, %ebx
je 0x7346
movq %r12, (%rsp)
movl %ebp, 0x14(%rsp)
movq %r14, 0x20(%rsp)
movl $0x7a120, %ebx          # imm = 0x7A120
movl $0x7a120, %edi          # imm = 0x7A120
movl $0x1, %esi
callq 0x31b0
movq %rax, %r15
movq 0x1a8bf(%rip), %r12     # 0x21a38
testq %r12, %r12
je 0x72d6
movq (%rsp), %rsi
xorl %ebp, %ebp
movq 0x10(%r12), %r13
movq %r13, 0x18(%rsp)
subq %rsi, %r13
movq %r13, %r14
addq %rbp, %r14
cmpq %r14, %rbx
jae 0x71d6
movq %rsi, 0x8(%rsp)
movl $0x1, %esi
movq %r14, %rdi
callq 0x31b0
movq %r15, %rbx
movq %rax, %r15
movq %rax, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x31f0
movq %rbx, %rdi
callq 0x3040
movq 0x8(%rsp), %rsi
movq %r14, %rbx
addq %r15, %rbp
movq %rbp, %rdi
movq %r13, %rdx
callq 0x31f0
movq 0x18(%r12), %rax
movq 0x18(%rsp), %r13
cmpq %r13, %rax
movq %rax, 0x8(%rsp)
je 0x71fd
movq %rbx, %rbp
jmp 0x7256
movq %r13, %rbp
subq %rax, %rbp
addq %r14, %rbp
cmpq %rbp, %rbx
jae 0x7236
movl $0x1, %esi
movq %rbp, %rdi
callq 0x31b0
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x31f0
movq %r15, %rdi
callq 0x3040
movq %rbx, %r15
jmp 0x7239
movq %rbx, %rbp
movaps 0xb2d0(%rip), %xmm0     # 0x12510
movups %xmm0, 0x10(%r15,%r14)
movaps 0xb2b3(%rip), %xmm0     # 0x12500
movups %xmm0, (%r15,%r14)
addq $0x20, %r14
leaq 0x12(%r14), %rbx
cmpq %rbx, %rbp
jae 0x728f
movl $0x1, %esi
movq %rbx, %rdi
callq 0x31b0
movq %r15, %r13
movq %rax, %r15
movq %rax, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x31f0
movq %r13, %rdi
movq 0x18(%rsp), %r13
callq 0x3040
jmp 0x7292
movq %rbp, %rbx
leaq (%r15,%r14), %rdi
movq %rbx, %rsi
subq %r14, %rsi
movq 0x8(%r12), %rcx
leaq 0xb24e(%rip), %rdx      # 0x124f6
xorl %eax, %eax
callq 0x3110
movslq %eax, %rbp
addq %r14, %rbp
movq 0x8(%rsp), %rsi
cmpq %r13, %rsi
jne 0x72c7
movb $0x22, (%r15,%rbp)
incq %rbp
movq (%r12), %r12
testq %r12, %r12
jne 0x7188
jmp 0x72dc
xorl %ebp, %ebp
movq (%rsp), %rsi
movq %rsi, %rdi
movq %rsi, %r14
callq 0x30c0
movq %rax, %rbx
leaq (%r15,%rbp), %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x31f0
movq %r15, %r13
movq 0x20(%rsp), %r15
movq %r15, %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3250
cmpl $-0x1, %eax
je 0x7394
movl %eax, %r14d
addq %rbp, %rbx
movl %eax, %edi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x30b0
cmpq $-0x1, %rax
movq (%rsp), %r12
je 0x739c
movl %r14d, %edi
callq 0x3160
movq %r13, %rdi
callq 0x3040
movl 0x14(%rsp), %ebp
movq 0x28(%rsp), %rax
movq %rax, 0x1a6f6(%rip)     # 0x21a48
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0x1a6da(%rip)    # 0x21a38
movq 0x78(%rsp), %rsi
movq %r12, %rdi
callq 0x3230
movl %ebp, %edi
callq 0x3160
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
callq 0x3619
movq %r14, %rdi
callq 0x360b
movq %r15, %rdi
callq 0x35fd
movq %r15, %rdi
callq 0x35ef