Function at 0x140023130
Capabilities:
Write file on windows

Disassembly:
mov rax, rsp
push rbp
push rbx
lea rbp, [rax - 0x5f]
sub rsp, 0xe8
cmp qword [0x14008e868], 0
mov rbx, rcx
je 0x1400234e9
mov qword [rax + 8], rsi
lea rcx, [0x14008e870]
mov qword [rax - 0x18], rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x14008e89c]
lea rdx, [rbp - 0x49]
add eax, 0x20
xor edi, edi
mov dword [rbp + 0x2f], eax
mov rax, qword [rbx]
mov dword [rbp + 0x33], edi
mov rsi, qword [rax + 8]
mov eax, dword [rsi + 0x8c]
lea rcx, [rsi + 0x2c]
mov dword [rbp - 0x69], eax
call fcn.140023060
lea rcx, [rsi + 0x34]
mov dword [rbp - 0x65], eax
lea rdx, [rbp - 0x49]
call fcn.140023060
mov dword [rbp - 0x61], eax
lea rcx, [rsi + 4]
movsxd r9, dword [rcx]
mov eax, edi
sub eax, dword [rcx]
add r9, rcx
neg eax
sbb rax, rax
and r9, rax
movsxd rax, dword [rbp + 0x33]
cmp eax, 0xa
je 0x140023500
lea rdx, [rdi - 1]
test r9, r9
jne 0x1400231d8
mov r8d, edi
jmp 0x1400231e9
mov r8, rdx
nop dword [rax + rax]
inc r8
cmp byte [r9 + r8], dil
jne 0x1400231e0
mov dword [rbp + rax*4 - 0x49], r8d
movsxd rax, dword [rbp + 0x33]
mov qword [rbp + rax*8 - 0x21], r9
mov ecx, dword [rbp + 0x2f]
mov eax, ecx
mov r10d, dword [rbp + 0x33]
inc r10d
test r9, r9
mov dword [rbp + 0x33], r10d
cmove eax, edi
add ecx, 5
add ecx, r8d
mov dword [rbp - 0x5d], eax
movsxd r8, dword [rsi + 8]
mov eax, edi
sub eax, dword [rsi + 8]
mov dword [rbp + 0x2f], ecx
lea rcx, [rsi + 8]
add r8, rcx
neg eax
sbb rax, rax
and r8, rax
cmp r10d, 0xa
je 0x140023500
mov qword [rsp + 0xd0], r15
test r8, r8
jne 0x140023250
mov edx, edi
jmp 0x140023259
inc rdx
cmp byte [r8 + rdx], dil
jne 0x140023250
movsxd rax, r10d
mov dword [rbp + rax*4 - 0x49], edx
movsxd rax, dword [rbp + 0x33]
mov qword [rbp + rax*8 - 0x21], r8
mov ecx, dword [rbp + 0x2f]
mov eax, ecx
mov r15d, dword [rbp + 0x33]
inc r15d
test r8, r8
mov dword [rbp + 0x33], r15d
cmove eax, edi
add ecx, 5
add ecx, edx
mov dword [rbp - 0x59], eax
mov rax, qword [rbx]
mov dword [rbp + 0x2f], ecx
mov ecx, 0x80
or word [rax], cx
test r15d, r15d
je 0x1400232b0
lea rcx, [rbp - 0x49]
mov edx, r15d
add edi, 5
add edi, dword [rcx]
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x1400232a1
lea eax, [rdi + 0x20]
mov dword [rbp - 0x75], 2
mov dword [rbp - 0x79], eax
lea rdi, [rbp - 0x79]
mov eax, dword [0x14008e898]
mov ebx, 0xc
mov dword [rbp - 0x71], eax
inc eax
add dword [0x14008e89c], ebx
mov dword [0x14008e898], eax
nop dword [rax]
mov r9, qword [0x14008e868]
mov edx, 1
mov r8d, ebx
mov rcx, rdi
call fcn.1400529c8
movsxd rcx, eax
sub ebx, eax
add rdi, rcx
test ebx, ebx
jg 0x1400232e0
mov ebx, 0x14
lea rdi, [rbp - 0x69]
add dword [0x14008e89c], ebx
nop dword [rax]
nop word [rax + rax]
mov r9, qword [0x14008e868]
mov edx, 1
mov r8d, ebx
mov rcx, rdi
call fcn.1400529c8
movsxd rcx, eax
sub ebx, eax
add rdi, rcx
test ebx, ebx
jg 0x140023320
test r15d, r15d
je 0x14002343d
mov qword [rsp + 0xd8], r14
lea rsi, [rbp - 0x49]
lea r14, [rbp - 0x21]
nop dword [rax]
mov eax, dword [rsi]
lea rdi, [rbp + 0x77]
mov ebx, 4
mov dword [rbp + 0x77], eax
add dword [0x14008e89c], ebx
nop dword [rax]
nop dword [rax + rax]
mov r9, qword [0x14008e868]
mov edx, 1
mov r8d, ebx
mov rcx, rdi
call fcn.1400529c8
movsxd rcx, eax
sub ebx, eax
add rdi, rcx
test ebx, ebx
jg 0x140023380
mov eax, dword [0x14008e89c]
mov ebx, dword [rbp + 0x77]
add eax, ebx
mov rdi, qword [r14]
mov dword [0x14008e89c], eax
test ebx, ebx
jle 0x1400233e9
nop dword [rax + rax]
mov r9, qword [0x14008e868]
mov edx, 1
movsxd r8, ebx
mov rcx, rdi
call fcn.1400529c8
movsxd rcx, eax
sub ebx, eax
add rdi, rcx
test ebx, ebx
jg 0x1400233c0
mov eax, dword [0x14008e89c]
inc eax
mov byte [rbp + 0x6f], 0
mov dword [0x14008e89c], eax
lea rdi, [rbp + 0x6f]
mov ebx, 1
nop
mov r9, qword [0x14008e868]
mov edx, 1
mov r8d, ebx
mov rcx, rdi
call fcn.1400529c8
movsxd rdx, eax
sub ebx, eax
add rdi, rdx
test ebx, ebx
jg 0x140023400
add rsi, 4
add r14, 8
sub r15, 1
jne 0x140023360
mov r14, qword [rsp + 0xd8]
lea rcx, [0x14008e870]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rcx, [rbp + 0x6f]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov r15, qword [rsp + 0xd0]
test eax, eax
je 0x1400234f3
mov rax, qword [rbp + 0x6f]
xor edx, edx
sub rax, qword [0x14008eac8]
xorps xmm0, xmm0
imul rax, rax, 0xf4240
div qword [0x14008eac0]
mov rbx, rax
add rbx, qword [0x14008ead0]
mov rcx, rbx
sub rcx, qword [0x14008e8a0]
js 0x14002349f
cvtsi2sd xmm0, rcx
jmp 0x1400234b4
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
divsd xmm0, qword [0x140083220]
comisd xmm0, xmmword [0x140083200]
jbe 0x1400234d9
mov rcx, qword [0x14008e868]
call fcn.14005342c
mov qword [0x14008e8a0], rbx
mov rsi, qword [rsp + 0x100]
mov rdi, qword [rsp + 0xe0]
add rsp, 0xe8
pop rbx
pop rbp
ret
lea rcx, str.QueryPerformanceCounter_failed
call fcn.1400139a0
int3
lea rcx, str.too_many_strings
call fcn.140013920
int3