Function at 0x401a40
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov eax, dword [r8 + 0x10]
comisd xmm1, xmmword [0x0041f358]
movzx esi, byte [r8]
movzx ebx, byte [r8 + 0xc]
mov r12, rcx
mov rdi, r8
movzx r14d, byte [r8 + 0xd]
mov dword [rsp + 0x3c], eax
ja 0x401a81
xorpd xmm1, xmmword [0x0041f360]
movq r8, xmm1
movq r15, xmm1
movabs rax, 0xfffffffffffff
and rax, r8
shr r8, 0x34
and r8d, 0x7ff
shr r15, 0x3f
cmp r8, 0x7ff
je 0x401f50
mov rcx, rax
or rcx, r8
jne 0x401c90
lea r10, str._0e00
cmp r15b, 1
lea rax, str.0e00
sbb r13d, r13d
add r13d, 6
test r15b, r15b
cmove r10, rax
cmp byte [rdi + 0x18], 0
jne 0x401f6c
mov dword [rsp + 0x40], 1
mov qword [rsp + 0x90], 0
cmp sil, 0x30
mov qword [rsp + 0x98], 0
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0x70], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x88], 0
je 0x401ec0
test bl, bl
je 0x401ee0
test r14b, r14b
jne 0x402000
lea r15, [rsp + 0x90]
mov r14d, r13d
xor r9d, r9d
mov rcx, r15
xor ebp, ebp
xor ebx, ebx
movsxd r8, r13d
mov rdx, r10
mov qword [rsp + 0x48], r9
call sym.memcpy
add ebp, dword [rdi + 4]
movsxd r8, r14d
mov eax, dword [rsp + 0x3c]
mov r9, qword [rsp + 0x48]
sub ebp, r14d
test eax, eax
jne 0x401e70
test ebp, ebp
jle 0x401bc4
lea ecx, [rbx + rbp]
mov eax, ebx
nop
movsxd rdx, eax
add eax, 1
cmp eax, ecx
mov byte [rsp + rdx + 0x70], sil
jne 0x401bb0
add ebx, ebp
movsxd r9, ebx
lea rdi, [rsp + 0x70]
mov rdx, r15
add ebx, r14d
lea rcx, [rdi + r9]
call sym.memcpy
movsxd rbx, ebx
mov byte [rsp + rbx + 0x70], 0
mov rbx, rdi
mov edx, dword [rbx]
add rbx, 4
lea eax, [rdx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x401be3
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea rdx, [rbx + 2]
mov esi, eax
cmove rbx, rdx
add sil, al
sbb rbx, 3
sub rbx, rdi
je 0x401e00
lea ecx, [rbx + 1]
mov ebp, ebx
movsxd rcx, ecx
call sym.malloc_noscan
cmp ebx, 8
mov rsi, rax
jae 0x401f10
test bl, 4
jne 0x40209f
test ebx, ebx
jne 0x402080
xor r13d, r13d
cmp dword [rsp + 0x40], 0xfa1d05ee
mov byte [rsi + rbx], 0
je 0x401e1d
mov rax, r12
mov qword [r12], rsi
mov dword [r12 + 8], ebp
mov dword [r12 + 0xc], r13d
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r10, [r8 - 0x3ff]
mov r9d, dword [rdi + 8]
cmp r10, 0x34
ja 0x401cc6
mov rdx, rax
mov ecx, 0x34
bts rdx, 0x34
sub rcx, r10
mov r10, rdx
shr r10, cl
mov r11, r10
shl r11, cl
cmp rdx, r11
je 0x402010
lea rcx, [rsp + 0x60]
mov rdx, rax
mov dword [rsp + 0x40], r9d
mov qword [rsp + 0x48], rcx
call sym.strconv__f64_to_decimal
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x68]
mov r9d, dword [rsp + 0x40]
mov qword [rsp + 0x58], rcx
mov rcx, qword [rsp + 0x48]
lea rbp, [rsp + 0x50]
mov r8d, r15d
mov dword [rsp + 0x20], r9d
mov rdx, rbp
mov qword [rsp + 0x50], r10
call sym.strconv__Dec64_get_string_64
mov rax, qword [rsp + 0x68]
mov r10, qword [rsp + 0x60]
mov r15, rax
mov r13d, eax
sar r15, 0x20
cmp byte [rdi + 0x18], 0
mov dword [rsp + 0x40], r15d
je 0x401af2
mov rcx, qword [rsp + 0x48]
mov rdx, r15
mov eax, eax
mov qword [rsp + 0x50], r10
shl rdx, 0x20
or rax, rdx
mov rdx, rbp
mov qword [rsp + 0x58], rax
call sym.strconv__remove_tail_zeros
mov rax, qword [rsp + 0x68]
mov r10, qword [rsp + 0x60]
mov r13d, eax
sar rax, 0x20
cmp r15d, 0xfa1d05ee
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], eax
jne 0x401af2
mov qword [rsp + 0x40], r10
mov ecx, 1
mov ebp, 0x1e
call qword [sym.__acrt_iob_func]
mov r10, qword [rsp + 0x40]
lea r15, str.double_string.free___detected_n
mov qword [rsp + 0x100], r12
mov qword [rsp + 0x110], rdi
mov r12, rbp
mov rdi, r15
mov rbp, rax
mov r15, r10
nop word [rax + rax]
mov r8, r12
mov rcx, rdi
mov r9, rbp
mov edx, 1
call sym.fwrite
sub r12, rax
add rdi, rax
test r12, r12
jg 0x401dc0
mov eax, dword [rsp + 0x48]
mov r10, r15
mov r12, qword [rsp + 0x100]
mov rdi, qword [rsp + 0x110]
mov dword [rsp + 0x40], eax
jmp 0x401af2
lea rsi, [0x0041e097]
xor ebp, ebp
mov r13d, 1
cmp dword [rsp + 0x40], 0xfa1d05ee
jne 0x401c60
mov ecx, 1
mov ebx, 0x1e
call qword [sym.__acrt_iob_func]
lea rdi, str.double_string.free___detected_n
mov r14, rax
nop word [rax + rax]
mov r8, rbx
mov rcx, rdi
mov r9, r14
mov edx, 1
call sym.fwrite
sub rbx, rax
add rdi, rax
test rbx, rbx
jg 0x401e40
jmp 0x401c60
lea rdi, [rsp + 0x70]
mov rdx, r15
add ebx, r14d
lea rcx, [rdi + r9]
call sym.memcpy
cmp dword [rsp + 0x3c], 1
jne 0x401bd8
test ebp, ebp
jle 0x401bd8
lea ecx, [rbx + rbp]
mov eax, ebx
nop dword [rax]
movsxd rdx, eax
add eax, 1
cmp eax, ecx
mov byte [rsp + rdx + 0x70], sil
jne 0x401ea0
add ebx, ebp
jmp 0x401bd8
test bl, bl
je 0x401fd0
test r14b, r14b
je 0x401b67
mov byte [rsp + 0x70], 0x2b
jmp 0x401fd5
mov byte [rsp + 0x90], 0x2d
lea r15, [rsp + 0x90]
xor r9d, r9d
xor ebp, ebp
lea r14d, [r13 + 1]
xor ebx, ebx
lea rcx, [r15 + 1]
jmp 0x401b7c
lea ecx, [rbx - 1]
mov eax, ebx
mov rdx, qword [rdi + rax - 8]
cmp ecx, 8
mov qword [rsi + rax - 8], rdx
jb 0x401c4b
and ecx, 0xfffffff8
xor eax, eax
mov edx, eax
add eax, 8
mov r8, qword [rdi + rdx]
cmp eax, ecx
mov qword [rsi + rdx], r8
jb 0x401f2d
jmp 0x401c4b
test rax, rax
je 0x401fa8
cmp byte [rdi + 0x18], 0
mov r13d, 3
lea r10, [0x0041e0a4]
je 0x401aea
lea rcx, [rsp + 0x60]
mov r13d, r13d
mov qword [rsp + 0x50], r10
lea rdx, [rsp + 0x50]
bts r13, 0x20
mov qword [rsp + 0x58], r13
call sym.strconv__remove_tail_zeros
mov rax, qword [rsp + 0x68]
mov r10, qword [rsp + 0x60]
mov r13d, eax
shr rax, 0x20
mov qword [rsp + 0x40], rax
jmp 0x401af2
lea r10, str._inf
test r15b, r15b
mov r13d, 4
lea rax, str.inf
cmove r10, rax
jmp 0x401ae0
mov byte [rsp + 0x70], 0x2d
lea r15, [rsp + 0x90]
mov r14d, r13d
mov r9d, 1
mov rcx, r15
mov ebp, 0xffffffff
mov ebx, 1
jmp 0x401b7c
mov byte [rsp + 0x90], 0x2b
jmp 0x401ee8
movabs r8, 0xcccccccccccccccd
mov rax, r10
mul r8
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
cmp r10, rax
jne 0x4020b2
xor ecx, ecx
nop word cs:[rax + rax]
mov rax, r10
add ecx, 1
mul r8
mov r10, rdx
shr r10, 3
mov rax, r10
mul r8
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
cmp r10, rax
je 0x402040
lea rax, [rsp + 0x60]
mov qword [rsp + 0x48], rax
jmp 0x401cec
movzx eax, byte [rdi]
test bl, 2
mov byte [rsi], al
je 0x401c4b
mov eax, ebx
movzx edx, word [rdi + rax - 2]
mov word [rsi + rax - 2], dx
jmp 0x401c4b
mov eax, dword [rdi]
mov dword [rsi], eax
mov eax, ebx
mov edx, dword [rdi + rax - 4]
mov dword [rsi + rax - 4], edx
jmp 0x401c4b
xor ecx, ecx
jmp 0x402066