Function at 0x408a00
Capabilities:
Check os version
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x5c8
mov rsi, rcx
mov rcx, qword [0x00488048]
mov rdi, r8
mov rbx, rdx
test rcx, rcx
je 0x408a50
call sub.KERNEL32.dll_RemoveVectoredExceptionHandler
test eax, eax
jne 0x408a45
lea rcx, [0x0045177e]
mov edx, 0x18
xor r9d, r9d
call fcn.00401000
mov qword [0x00488048], 0
mov eax, dword [0x00488020]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rax, qword [rax + 8]
test rax, rax
je 0x408b23
cmp rax, 1
jne 0x40902f
mov eax, dword [0x00488020]
mov rcx, qword gs:[0x58]
lea r14, str.Panicked_during_a_panic._Aborting._n
lea rdi, [rsp + 0xf0]
xor ebx, ebx
mov rax, qword [rcx + rax*8]
mov qword [rax + 8], 2
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rax, qword [rax + 0x20]
mov rsi, qword [rax + 0x30]
nop word cs:[rax + rax]
cmp rbx, 0x23
ja 0x408f7b
mov r8d, 0x23
lea rdx, [r14 + rbx]
mov dword [rsp + 0xf0], 0xaaaaaaaa
mov qword [rsp + 0x20], 0
mov rcx, rsi
mov r9, rdi
sub r8d, ebx
call sub.KERNEL32.dll_WriteFile
test eax, eax
je 0x408d68
mov eax, dword [rsp + 0xf0]
add rbx, rax
cmp rbx, 0x23
jne 0x408ad0
jmp 0x40902f
mov eax, dword [0x00488020]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov qword [rax + 8], 1
lock inc byte [0x00488050]
call sub.KERNEL32.dll_GetCurrentThreadId
cmp dword [0x00488038], eax
jne 0x408b63
mov rax, qword [0x00488030]
inc rax
jne 0x408ba0
jmp 0x408b8c
lea rcx, [0x00488028]
mov ebp, eax
call sub.KERNEL32.dll_AcquireSRWLockExclusive
cmp qword [0x00488030], 0
jne 0x408a31
mov dword [0x00488038], ebp
xor eax, eax
inc rax
jne 0x408ba0
lea rcx, str.integer_overflow
mov edx, 0x10
xor r9d, r9d
call fcn.00401000
mov qword [0x00488030], rax
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rax, qword [rax + 0x20]
mov r13, qword [rax + 0x30]
call sub.KERNEL32.dll_GetCurrentThreadId
lea rdx, [rsp + 0x28]
lea rcx, [fcn.0040a9a0]
lea rbp, str.thread__panic:
lea r15, [rsp + 0xf0]
mov r14d, eax
xor r12d, r12d
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x88], rcx
nop word [rax + rax]
cmp r12, 7
ja 0x408f7b
mov rcx, qword [rsp + 0x28]
mov r8d, r12d
lea rdx, [rbp + r12]
xor r8d, 7
mov r9, r15
mov dword [rsp + 0xf0], 0xaaaaaaaa
mov qword [rsp + 0x20], 0
call sub.KERNEL32.dll_WriteFile
test eax, eax
je 0x408f8f
mov eax, dword [rsp + 0xf0]
add r12, rax
cmp r12, 7
jne 0x408c00
vbroadcastss ymm0, dword [0x004501e0]
mov r8d, 0x21
mov byte [rsp + 0x110], 0xaa
vmovups ymmword [rsp + 0xf0], ymm0
cmp r14d, 0x64
jb 0x408d83
mov eax, r14d
imul rdx, rax, 0x51eb851f
mov r8d, r14d
shr rdx, 0x25
imul ecx, edx, 0x64
sub r8d, ecx
lea rcx, str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
movzx r8d, word [rcx + r8*2]
mov word [rsp + 0x10f], r8w
mov r8d, 0x1f
cmp r14d, 0x270f
jbe 0x408d80
mov r8d, edx
imul r8, r8, 0x28f5c29
shr r8, 0x20
imul r8d, r8d, 0x64
sub edx, r8d
mov r8d, 0x1d
movzx edx, word [rcx + rdx*2]
mov word [rsp + 0x10d], dx
mov edx, 0xd1b71759
imul rdx, rax
shr rdx, 0x2d
cmp r14d, 0xf4240
jb 0x408d80
mov r8d, edx
imul r8, r8, 0x28f5c29
shr r8, 0x20
imul r8d, r8d, 0x64
sub edx, r8d
mov r8d, 0x1b
movzx edx, word [rcx + rdx*2]
mov word [rsp + 0x10b], dx
imul rdx, rax, 0x431bde83
shr rdx, 0x32
cmp r14d, 0x5f5e100
jb 0x408d80
imul r8d, edx, 0x147b
imul r14, rax, 0x55e63b89
shr r8d, 0x13
shr r14, 0x39
imul r8d, r8d, 0x64
sub edx, r8d
mov r8d, 0x19
movzx edx, dx
movzx ecx, word [rcx + rdx*2]
mov word [rsp + 0x109], cx
jmp 0x408d83
call sub.KERNEL32.dll_GetLastError
movzx eax, ax
cmp eax, 0x3e5
jne 0x40902f
jmp 0x408a31
mov r14d, edx
cmp r14d, 0xa
jae 0x408d9a
or r14b, 0x30
mov byte [rsp + r8 + 0xef], r14b
dec r8
jmp 0x408db5
lea rcx, str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
mov eax, r14d
movzx eax, word [rcx + rax*2]
mov word [rsp + r8 + 0xee], ax
add r8, 0xfffffffffffffffe
mov edx, 0x21
lea rcx, [rsp + r8 + 0xf0]
lea r9, [rsp + 0x80]
sub rdx, r8
lea r8, [0x00482ed8]
vzeroupper
call fcn.0042f5d0
test ax, ax
jne 0x40900e
lea r14, [rsp + 0xf0]
xor r15d, r15d
cmp r15, 8
ja 0x408f7b
mov rcx, qword [rsp + 0x28]
mov r8d, 8
lea rdx, [r15 + rbp + 9]
mov dword [rsp + 0xf0], 0xaaaaaaaa
mov qword [rsp + 0x20], 0
mov r9, r14
sub r8d, r15d
call sub.KERNEL32.dll_WriteFile
test eax, eax
je 0x408f8f
mov eax, dword [rsp + 0xf0]
add r15, rax
cmp r15, 8
jne 0x408df0
lea rax, [rsp + 0x48]
lea r15, [fcn.0040a9a0]
lea r8, [0x00482ed8]
lea r9, [rsp + 0x90]
mov qword [rsp + 0x48], r13
mov rcx, rbx
mov rdx, rdi
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x98], r15
call fcn.0042f5d0
test ax, ax
jne 0x40900e
lea rdi, [0x00451895]
lea rbx, [rsp + 0xf0]
xor eax, eax
test eax, eax
jne 0x408edd
nop word [rax + rax]
mov rcx, qword [rsp + 0x48]
mov r8d, 1
mov dword [rsp + 0xf0], 0xaaaaaaaa
mov qword [rsp + 0x20], 0
mov rdx, rdi
mov r9, rbx
call sub.KERNEL32.dll_WriteFile
test eax, eax
je 0x408f8f
mov eax, dword [rsp + 0xf0]
test eax, eax
je 0x408ea0
cmp eax, 1
jne 0x408f7b
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
cmp byte [0x004880a8], 0
mov rax, qword [rax + 0x20]
mov r14, qword [rax + 0x30]
mov qword [rsp + 0x70], r14
jne 0x4090d0
cmp byte [0x004880c0], 0
jne 0x409034
vmovups xmm0, xmmword [0x00482940]
lea rax, [0x004880c8]
lea rcx, fcn.004081f0
mov qword [0x004880b0], rax
mov qword [0x004880b8], rcx
mov qword [rsp + 0x30], rax
mov byte [0x004880c0], 1
mov qword [rsp + 0x38], rcx
vmovaps xmmword [rsp + 0xf0], xmm0
vxorps xmm0, xmm0, xmm0
vmovaps xmmword [rsp + 0x100], xmm0
vmovups ymm0, ymmword [rsp + 0xf0]
vmovups ymmword [0x004880c8], ymm0
jmp 0x409042
lea rcx, str.start_index_is_larger_than_end_index
mov edx, 0x24
xor r9d, r9d
call fcn.00401000
call sub.KERNEL32.dll_GetLastError
movzx ecx, ax
mov ax, 0x10
cmp ecx, 0x6c
jle 0x408fc6
cmp ecx, 0x3e4
jle 0x408feb
cmp ecx, 0x3e5
je 0x408a31
cmp ecx, 0x718
je 0x408fd5
cmp ecx, 0x6f8
je 0x408fd5
jmp 0x40900e
cmp ecx, 0x20
jg 0x408fdb
cmp ecx, 6
je 0x408ffe
cmp ecx, 8
jne 0x40900e
mov ax, 0x17
jmp 0x40900e
cmp ecx, 0x21
je 0x409004
cmp ecx, 0x40
jne 0x40900e
mov ax, 0x23
jmp 0x40900e
cmp ecx, 0x6d
je 0x40900a
cmp ecx, 0x3e3
jne 0x40900e
mov ax, 0x21
jmp 0x40900e
mov ax, 0x2a
jmp 0x40900e
mov ax, 0x2b
jmp 0x40900e
mov ax, 0x22
cmp ax, 0x2b
ja 0x40930c
movzx eax, ax
movabs rcx, 0xf0f49810880
bt rcx, rax
jae 0x40930c
call fcn.0040a9e0
vmovups xmm0, xmmword [0x004880b0]
vmovaps xmmword [rsp + 0x30], xmm0
lea rcx, [rsp + 0xf0]
lea rdx, [rsp + 0x30]
vzeroupper
call fcn.0040d970
movsx rax, word [rsp + 0x140]
test rax, rax
jne 0x4091c2
vmovups ymm2, ymmword [rsp + 0x120]
vmovups ymm1, ymmword [rsp + 0x110]
vmovups ymm0, ymmword [rsp + 0xf0]
vmovups ymmword [rsp + 0xd0], ymm2
vmovups ymmword [rsp + 0xc0], ymm1
vmovups ymmword [rsp + 0xa0], ymm0
vmovups ymmword [0x00488058], ymm0
vmovups ymm0, ymmword [rsp + 0xc0]
vmovups ymm1, ymmword [rsp + 0xd0]
vmovups ymmword [0x00488078], ymm0
vmovups ymmword [0x00488088], ymm1
mov byte [0x004880a8], 1
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
lea rdi, [rsp + 0xa0]
lea rdx, [rsp + 0x78]
mov rcx, rdi
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x30]
mov qword [rsp + 0x78], rax
vzeroupper
call fcn.00427c60
lea rbx, [rsp + 0xf0]
mov r8d, 0x4d0
xor edx, edx
mov rcx, rbx
call fcn.0044c710
mov rcx, rbx
call sub.ntdll.dll_RtlCaptureContext
lea rdx, [0x00488058]
lea rcx, [rsp + 0x70]
mov qword [rsp + 0x20], rsi
mov r8, rdi
mov r9, rbx
call fcn.00427df0
test ax, ax
je 0x409272
movsx rax, ax
lea rcx, [0x004834c0]
lea rdx, str.Unable_to_dump_stack_trace:_s_n
mov r8d, 0x1c
mov qword [rsp + 0x30], r14
shl rax, 4
mov rsi, qword [rax + rcx]
mov rdi, qword [rax + rcx + 8]
lea rax, [rsp + 0x30]
lea rcx, [rsp + 0x60]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], r15
call fcn.004270d0
test ax, ax
jne 0x409251
lea r8, [0x00482ed8]
lea r9, [rsp + 0x60]
mov rcx, rsi
mov rdx, rdi
call fcn.0042f5d0
test ax, ax
jne 0x409251
vmovups xmm0, xmmword [rsp + 0x60]
lea rdx, [0x004528c3]
jmp 0x409235
shl rax, 4
lea rcx, [0x004834c0]
lea rdx, str.Unable_to_dump_stack_trace:_Unable_to_open_debug_info:_s_n
mov r8d, 0x37
mov qword [rsp + 0xa0], r14
mov rsi, qword [rax + rcx]
mov rdi, qword [rax + rcx + 8]
lea rax, [rsp + 0xa0]
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], r15
call fcn.004270d0
test ax, ax
jne 0x409251
lea r8, [0x00482ed8]
lea r9, [rsp + 0x50]
mov rcx, rsi
mov rdx, rdi
call fcn.0042f5d0
test ax, ax
jne 0x409251
vmovups xmm0, xmmword [rsp + 0x50]
lea rdx, [0x004528a2]
vmovaps xmmword [rsp + 0xf0], xmm0
lea rcx, [rsp + 0xf0]
mov r8d, 1
call fcn.004270d0
cmp ax, 0x2b
ja 0x40930c
movzx eax, ax
movabs rcx, 0xf0f49810881
bt rcx, rax
jae 0x40930c
mov rax, qword [0x00488030]
sub rax, 1
jb 0x408b8c
mov qword [0x00488030], rax
jne 0x4092a2
lea rcx, [0x00488028]
mov dword [0x00488038], 0xffffffff
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
lock dec byte [0x00488050]
je 0x40902f
lea rsi, [rsp + 0xa0]
lea rdi, [rsp + 0xf0]
mov dword [rsp + 0xa0], 0
nop word [rax + rax]
mov r8d, 4
mov dword [rsp + 0xf0], 0
mov rcx, rsi
mov rdx, rdi
xor r9d, r9d
call sub.ntdll.dll_RtlWaitOnAddress
test eax, eax
je 0x4092d0
cmp eax, 0x102
lea rcx, [0x0045177e]
mov edx, 0x18
xor r9d, r9d
call fcn.00401000
lea rcx, str.invalid_error_code
mov edx, 0x12
xor r9d, r9d
call fcn.00401000
int3