Function at 0x1004058b0
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x108
pxor xmm0, xmm0
mov rdx, qword [rcx]
mov r15, rcx
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x40], xmm0
test rdx, rdx
je 0x100405c58
lea rbp, [rsp + 0x50]
lea rax, [rsp + 0x60]
movaps xmmword [rbp], xmm0
lea rcx, [rsp + 0x100]
nop word cs:[rax + rax]
movaps xmmword [rax], xmm0
add rax, 0x20
movaps xmmword [rax - 0x10], xmm0
cmp rax, rcx
jne 0x100405900
mov rcx, qword [rdx + 0x110]
test rcx, rcx
jne 0x10040592e
jmp 0x100405c6f
mov rdx, rcx
mov rcx, rax
mov rax, qword [rcx + 0x110]
test rax, rax
jne 0x100405928
lea r8, [rdx + 0x110]
mov edx, dword [rdx + 0x14]
cmp dword [rcx + 0x10], 3
jne 0x100405a10
mov rax, qword [0x10044c2e0]
test byte [rax + 0x40], 9
jne 0x100405a26
mov rbx, qword [r15]
test rbx, rbx
je 0x100405a69
mov eax, dword [rbx + 0x10]
xor edi, edi
cmp eax, 3
jne 0x100405978
mov edi, dword [rbx + 0x14]
xor r12d, r12d
lea r14, [rsp + 0x30]
lea r13, [rsp + 0x40]
jmp 0x1004059eb
mov rsi, qword [rbx + 0x118]
mov eax, dword [rsi + 0x10]
mov rdx, qword [rsi]
cmp eax, 2
je 0x100405bf0
jbe 0x100405aa0
cmp eax, 3
jne 0x100405dea
lea rcx, [rbx + 0x118]
call fcn.1004058b0
mov byte [rsi + 0x18], al
mov rsi, qword [rbx + 0x118]
cmp byte [rsi + 0x18], 0
jne 0x100405bd0
lea r15, [rbx + 0x110]
mov rbx, qword [r15]
test rbx, rbx
je 0x100405a6c
mov eax, dword [rbx + 0x10]
cmp eax, 3
jne 0x100405990
cmp dword [rbx + 0x14], edi
je 0x100405990
mov rcx, rbx
mov r8, r15
mov edx, edi
call fcn.100404570
mov rbx, rax
jmp 0x100405990
call fcn.100404570
mov rax, qword [0x10044c2e0]
test byte [rax + 0x40], 9
je 0x10040595f
call sub.msys_2.0.dll___getreent
mov r8d, 0x16
mov edx, 1
lea rcx, str.Normalized_Eval_Tree:_n
mov r9, qword [rax + 0x18]
call fcn.100431b00
mov rbx, qword [r15]
call sub.msys_2.0.dll___getreent
xor r8d, r8d
mov rcx, qword [rax + 0x18]
mov rdx, rbx
call fcn.100405230
mov rbx, qword [r15]
test rbx, rbx
jne 0x10040596b
xor r12d, r12d
lea rdx, [rsp + 0x40]
mov r9, r15
lea r8, [rsp + 0x30]
mov rcx, rbp
call fcn.100405850
mov eax, r12d
add rsp, 0x108
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsi + 0x18]
cmp edi, 1
je 0x1004059cb
test al, al
jne 0x100405bd0
lea rax, [0x100402e40]
lea rcx, [0x100403110]
cmp rdx, rax
sete al
cmp rdx, rcx
sete cl
or eax, ecx
lea rcx, [0x100402c40]
cmp rdx, rcx
sete cl
or al, cl
jne 0x100405c10
lea rax, [0x100402ce0]
cmp rdx, rax
je 0x100405c10
mov rax, qword [0x10044c2e0]
lea rcx, [0x100402e80]
movzx r8d, word [rax + 0x68]
lea rax, [0x100402470]
cmp rdx, rax
sete al
cmp rdx, rcx
sete cl
or eax, ecx
test r8w, r8w
sete cl
or eax, ecx
lea rcx, [0x1004027a0]
cmp rdx, rcx
sete cl
or al, cl
jne 0x100405b4f
lea rax, [0x100402420]
cmp rdx, rax
je 0x100405b4f
mov eax, dword [rsi + 0x20]
test eax, eax
je 0x100405c10
lea rax, [0x1004032a0]
cmp rdx, rax
je 0x100405c7f
cmp r8w, 1
jbe 0x1004059d5
mov eax, dword [rsi + 0x20]
lea edx, [rax - 1]
cmp edx, 1
jbe 0x100405c60
cmp r8w, 2
je 0x1004059d5
mov rdx, qword [0x10044c2e0]
test byte [rdx + 0x40], 8
jne 0x100405d2b
mov rcx, qword [rbx + 0x110]
shl rax, 4
lea rdx, [rbp + rax]
mov qword [r15], rcx
mov rcx, qword [rdx]
mov qword [rbx + 0x110], rcx
mov qword [rdx], rbx
cmp qword [rsp + rax + 0x58], 0
jne 0x1004059dc
mov qword [rsp + rax + 0x58], rbx
jmp 0x1004059dc
mov r9, r15
mov r8, r14
mov rdx, r13
mov rcx, rbp
call fcn.100405850
mov r12d, 1
jmp 0x1004059d5
lea rcx, [rsi + 0x118]
call fcn.1004058b0
mov byte [rsi + 0x18], al
mov rsi, qword [rbx + 0x118]
jmp 0x1004059cb
mov rax, qword [0x10044c2e0]
test byte [rax + 0x40], 8
jne 0x100405cb0
mov rax, qword [rbx + 0x110]
cmp qword [rsp + 0x48], 0
mov qword [r15], rax
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x40], rbx
mov qword [rbx + 0x110], rax
jne 0x1004059dc
mov qword [rsp + 0x48], rbx
jmp 0x1004059dc
xor r12d, r12d
jmp 0x100405a81
cmp byte [rsi + 0x1a], 0
jne 0x100405b79
jmp 0x100405b84
mov rcx, rdx
mov r8, r15
mov edx, 3
jmp 0x100405944
mov rax, qword [rbx + 0x110]
mov qword [r15], rax
mov rax, qword [rsp + 0x30]
cmp qword [rsp + 0x38], 0
mov qword [rsp + 0x30], rbx
mov qword [rbx + 0x110], rax
jne 0x1004059dc
mov qword [rsp + 0x38], rbx
jmp 0x1004059dc
movzx esi, word [rax + 0x68]
call sub.msys_2.0.dll___getreent
lea rdx, str._O_d:_promoting_cheap_predicate
mov rcx, qword [rax + 0x18]
mov r8d, esi
call sub.msys_2.0.dll_fprintf
mov rsi, qword [rbx + 0x118]
call sub.msys_2.0.dll___getreent
mov r9, qword [rsi + 0x30]
mov rcx, qword [rax + 0x18]
test r9, r9
je 0x100405d1a
mov r8, qword [rsi + 8]
lea rdx, str._s__s
call sub.msys_2.0.dll_fprintf
call sub.msys_2.0.dll___getreent
mov r8d, 0x10
mov edx, 1
lea rcx, str._into_name_list_n
mov r9, qword [rax + 0x18]
call fcn.100431b00
jmp 0x100405c21
mov rax, qword [rsi + 8]
mov rdx, rcx
mov rcx, rax
call fcn.100431ac0
jmp 0x100405cf5
mov dword [rsp + 0x2c], r8d
call sub.msys_2.0.dll___getreent
mov r8d, dword [rsp + 0x2c]
lea rdx, str._O_d:_categorising_predicate
mov rcx, qword [rax + 0x18]
movzx r8d, r8w
call sub.msys_2.0.dll_fprintf
mov rsi, qword [rbx + 0x118]
call sub.msys_2.0.dll___getreent
mov r9, qword [rsi + 0x30]
mov rcx, qword [rax + 0x18]
test r9, r9
je 0x100405dd9
mov r8, qword [rsi + 8]
lea rdx, str._s__s
call sub.msys_2.0.dll_fprintf
mov rax, qword [rbx + 0x118]
lea r8, [0x100433040]
mov rdx, r8
mov ecx, dword [rax + 0x20]
xor eax, eax
nop dword [rax]
cmp ecx, dword [rdx]
je 0x100405dce
add eax, 1
add rdx, 0x10
cmp eax, 0xb
jne 0x100405d90
lea rsi, [0x10043508a]
call sub.msys_2.0.dll___getreent
mov r8, rsi
lea rdx, str._by_cost___s__n
mov rcx, qword [rax + 0x18]
call sub.msys_2.0.dll_fprintf
mov rax, qword [rbx + 0x118]
mov eax, dword [rax + 0x20]
jmp 0x100405b95
shl rax, 4
mov rsi, qword [r8 + rax + 8]
jmp 0x100405da7
mov rax, qword [rsi + 8]
mov rdx, rcx
mov rcx, rax
call fcn.100431ac0
jmp 0x100405d77
lea rcx, str.oops____invalid_expression_type_
call sub.msys_intl_8.dll_libintl_gettext
xor edx, edx
mov ecx, 1
mov r8, rax
call sub.msys_2.0.dll_error
nop
nop word cs:[rax + rax]