Function at 0x1400552c0
Capabilities:
Check os version

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xd8]
sub rsp, 0x1d8
mov rax, qword [0x1400a45f8]
xor rax, rsp
mov qword [rbp + 0xc0], rax
mov r12, qword [rbp + 0x148]
xor r13d, r13d
mov rsi, qword [rbp + 0x158]
mov edi, r8d
mov dword [rsp + 0x50], r8d
mov ebx, edx
mov dword [rsp + 0x4c], edx
mov r15, rcx
lea r8d, [r13 + 0x50]
mov qword [rbp - 0x38], r12
xor edx, edx
mov qword [rbp - 0x40], rsi
lea rcx, [rbp + 0x70]
mov dword [rsp + 0x44], r13d
mov r14, r9
call sub.VCRUNTIME140.dll_memset
xor edx, edx
lea r8d, [r13 + 0x58]
lea rcx, [rsp + 0x60]
call sub.VCRUNTIME140.dll_memset
mov eax, dword [r15]
and eax, 2
je 0x140055380
test byte [r15 + 0xc], 0x20
je 0x140055380
mov eax, dword [rbp + 0x150]
mov r9, r14
mov qword [rsp + 0x38], rsi
mov r8d, edi
mov dword [rsp + 0x30], eax
mov edx, ebx
mov eax, dword [rbp + 0x140]
mov rcx, r15
mov qword [rsp + 0x28], r12
mov dword [rsp + 0x20], eax
call fcn.140055e10
jmp 0x140055946
test eax, eax
je 0x1400553b7
mov eax, dword [rbp + 0x150]
mov r9, r14
mov qword [rsp + 0x38], rsi
mov r8d, edi
mov dword [rsp + 0x30], eax
mov edx, ebx
mov eax, dword [rbp + 0x140]
mov rcx, r15
mov qword [rsp + 0x28], r12
mov dword [rsp + 0x20], eax
call fcn.140055970
jmp 0x140055946
xor edx, edx
lea rcx, [rsp + 0x60]
lea r8d, [rdx + 0x58]
call sub.VCRUNTIME140.dll_memset
xor edx, edx
lea rcx, [rbp + 0x70]
lea r8d, [rdx + 0x50]
call sub.VCRUNTIME140.dll_memset
mov ebx, dword [rbp + 0x140]
mov dword [rsi], r13d
cmp ebx, 0x3a
jbe 0x1400553ee
mov eax, 0x1d10
jmp 0x140055946
mov ecx, 0x22000c
lea rdi, [rbp + 0x70]
test ebx, ebx
mov eax, 0x220020
cmovne rdi, r14
test byte [r15], 0x10
mov qword [rsp + 0x58], rdi
cmove eax, ecx
mov ecx, dword [r15 + 0x2c]
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x60], ecx
call fcn.1400564c0
test al, al
jne 0x140055946
mov r13d, 4
mov r14d, 8
mov dword [rsp + 0x64], r14d
test byte [r15 + 0xc], r13b
je 0x14005556a
cmp ebx, r13d
jbe 0x140055602
mov eax, dword [rsp + 0x4c]
lea edx, [r14 - 6]
mov byte [rsp + 0x68], al
lea rcx, [rsp + 0x6e]
mov eax, dword [rsp + 0x50]
mov byte [rsp + 0x69], al
movzx eax, byte [rdi]
mov byte [rsp + 0x6a], al
movzx eax, byte [rdi + 1]
mov byte [rsp + 0x6b], al
movzx eax, byte [rdi + 2]
mov byte [rsp + 0x6c], al
movzx eax, byte [rdi + 3]
mov byte [rsp + 0x6d], al
call fcn.14004e230
cmp ebx, r13d
jbe 0x140055540
mov r12d, dword [rbp + 0x140]
mov r14d, 0xa
mov esi, r13d
add dword [rsp + 0x64], 8
lea ecx, [r14 - 2]
mov eax, esi
lea edx, [r14 + 2]
inc esi
lea rbx, [rsp + 0x68]
add rbx, rcx
movzx ecx, byte [rax + rdi]
movzx eax, byte [rsi + rdi]
inc esi
mov byte [rbx], cl
lea ecx, [r14 - 1]
mov byte [rsp + rcx + 0x68], al
movzx eax, byte [rsi + rdi]
inc esi
mov ecx, r14d
mov byte [rsp + rcx + 0x68], al
lea ecx, [r14 + 1]
movzx eax, byte [rsi + rdi]
inc esi
mov byte [rsp + rcx + 0x68], al
lea rcx, [rsp + 0x68]
movzx eax, byte [rsi + rdi]
inc esi
mov byte [rsp + rdx + 0x68], al
lea edx, [r14 + 3]
movzx eax, byte [rsi + rdi]
inc esi
mov byte [rsp + rdx + 0x68], al
lea edx, [r14 + 4]
add rcx, rdx
mov edx, 2
call fcn.14004e230
mov rcx, rbx
call fcn.1400649b0
add r14d, 8
cmp esi, r12d
jb 0x1400554a1
mov rsi, qword [rbp - 0x40]
mov r14d, 8
mov r12, qword [rbp - 0x38]
mov ebx, dword [rbp + 0x140]
mov eax, 0xaaaaaaab
mul ebx
shr edx, 2
movzx eax, dl
add al, al
add dl, al
movzx eax, byte [rsp + 0x6e]
add dl, dl
and al, 0xf9
sub bl, dl
add bl, 2
or bl, al
mov byte [rsp + 0x6e], bl
jmp 0x140055640
cmp ebx, r13d
jbe 0x140055602
mov edi, 6
nop dword [rax + rax]
mov rdx, qword [rsp + 0x58]
lea r8d, [rdi - 6]
mov ebx, dword [r15]
mov eax, ebx
and eax, 0xfffffff3
mov dword [r15], eax
lea eax, [rdi + 1]
movzx r10d, byte [rax + rdx]
mov eax, edi
shl r10w, 8
movzx ecx, byte [rax + rdx]
lea eax, [rdi - 1]
movzx r9d, byte [rax + rdx]
or r10w, cx
lea eax, [rdi - 2]
shl r9w, 8
movzx eax, byte [rax + rdx]
mov rcx, r15
or r9w, ax
mov edx, 3
lea rax, [rbp + 0x70]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r10w
call fcn.140055170
mov word [rsp + 0x40], ax
mov dword [r15], ebx
test al, al
jne 0x140055688
add edi, r13d
lea eax, [rdi - 2]
cmp eax, dword [rbp + 0x140]
jb 0x140055580
mov rdi, qword [rsp + 0x58]
mov eax, dword [rsp + 0x4c]
lea rcx, [rsp + 0x6e]
mov byte [rsp + 0x68], al
mov edx, 2
mov eax, dword [rsp + 0x50]
mov byte [rsp + 0x69], al
movzx eax, byte [rdi]
mov byte [rsp + 0x6a], al
movzx eax, byte [rdi + 1]
mov byte [rsp + 0x6b], al
movzx eax, byte [rdi + 2]
mov byte [rsp + 0x6c], al
movzx eax, byte [rdi + 3]
mov byte [rsp + 0x6d], al
call fcn.14004e230
lea rcx, [rsp + 0x68]
call fcn.1400649b0
test r12, r12
jne 0x14005569b
mov ecx, dword [rsp + 0x48]
lea rax, [rsp + 0x44]
mov qword [rsp + 0x28], rax
lea r8d, [r12 + 0x58]
xor r9d, r9d
mov dword [rsp + 0x20], r12d
lea rdx, [rsp + 0x60]
call fcn.140057140
movzx ebx, ax
mov ecx, dword [r15 + 0x2c]
call fcn.140056a90
movzx eax, bx
jmp 0x140055946
mov ecx, dword [r15 + 0x2c]
call fcn.140056a90
movzx eax, word [rsp + 0x40]
jmp 0x140055946
mov edi, dword [rbp + 0x150]
test byte [r15 + 0xc], r13b
je 0x140055793
cmp edi, r13d
jbe 0x140055793
lea ecx, [rdi + 7]
mov eax, 0xaaaaaaab
mul ecx
mov ecx, dword [rsp + 0x48]
lea rax, [rsp + 0x44]
mov ebx, edx
mov qword [rsp + 0x28], rax
shr ebx, 2
lea r9, [rbp + 0x70]
shl ebx, 3
lea rdx, [rsp + 0x60]
mov r8d, 0x58
mov dword [rsp + 0x20], ebx
call fcn.140057140
mov word [rsp + 0x40], ax
test al, al
jne 0x140055688
cmp dword [rsp + 0x44], ebx
je 0x14005570e
mov ecx, dword [r15 + 0x2c]
call fcn.140056a90
mov eax, 0x1d0d
jmp 0x140055946
xor edx, edx
lea rcx, [rbp + 0x70]
call fcn.140056bd0
movzx ebx, ax
test al, al
jne 0x140055782
movzx ecx, byte [rbp + 0x72]
mov byte [r12], cl
movzx ecx, byte [rbp + 0x73]
mov byte [r12 + 1], cl
movzx ecx, byte [rbp + 0x74]
mov byte [r12 + 2], cl
movzx ecx, byte [rbp + 0x75]
mov byte [r12 + 3], cl
cmp edi, r13d
jbe 0x140055780
mov eax, r14d
and eax, 7
jne 0x140055761
mov eax, r14d
lea rcx, [rbp + 0x70]
add rcx, rax
call fcn.1400649b0
jmp 0x140055766
cmp eax, 6
jae 0x140055778
mov ecx, r13d
inc r13d
mov eax, r14d
movzx eax, byte [rbp + rax + 0x70]
mov byte [rcx + r12], al
inc r14d
cmp r13d, edi
jb 0x140055748
mov dword [rsi], edi
mov ecx, dword [r15 + 0x2c]
call fcn.140056a90
movzx eax, bx
jmp 0x140055946
lea rcx, [rbp - 0x30]
mov dword [rbp - 0x30], 0x94
call qword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [rbp - 0x20], 2
jne 0x1400557bd
cmp dword [rbp - 0x2c], 5
jne 0x1400557bd
cmp dword [rbp - 0x28], 0
lea rcx, str..GlobalSNTNLUSB
je 0x1400557c4
lea rcx, str..SNTNLUSB
xor eax, eax
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov edx, 0xc0000000
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], 3
lea r8d, [rax + 3]
call fcn.140065100
mov rbx, rax
mov r13d, 0x1d0d
cmp rax, 0xffffffffffffffff
jne 0x1400557fd
lea ebx, [r13 - 0xa]
jmp 0x140055874
mov edx, dword [rsp + 0x48]
lea rax, [rsp + 0x44]
mov qword [rsp + 0x38], 0
lea r8, [rsp + 0x60]
mov qword [rsp + 0x30], rax
mov r9d, 0x58
lea rax, [rbp + 0x70]
mov dword [rsp + 0x28], r14d
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.140065a30
test eax, eax
je 0x140055841
xor eax, eax
movzx r14d, ax
jmp 0x140055868
call fcn.1400660f0
cmp eax, 6
jne 0x140055853
mov r14d, 0x1d43
jmp 0x140055868
call fcn.1400660f0
cmp eax, 0x39
mov r14d, r13d
mov edx, 0x1d6d
cmove r14w, dx
mov rcx, rbx
call fcn.140065350
movzx ebx, r14w
test bl, bl
jne 0x140055677
cmp dword [rsp + 0x44], 8
jne 0x140055892
xor edx, edx
lea rcx, [rbp + 0x70]
call fcn.140056bd0
movzx r13d, ax
movzx eax, r13b
test r13b, r13b
jne 0x140055939
xor r10d, r10d
mov r8, r12
mov edx, r10d
test edi, edi
je 0x1400558c5
lea eax, [rdx + 2]
dec edi
movzx eax, byte [rbp + rax + 0x70]
inc edx
mov byte [r8], al
inc r8
inc dword [rsi]
cmp edx, 4
jb 0x1400558a8
mov r14d, r10d
cmp r14d, edi
jae 0x140055939
mov ebx, dword [r15]
xor r9d, r9d
mov eax, ebx
mov r8d, r14d
and eax, 0xfffffff3
mov rcx, r15
mov dword [r15], eax
lea rax, [rbp + 0x70]
mov qword [rsp + 0x28], rax
lea edx, [r9 + 2]
mov word [rsp + 0x20], r10w
call fcn.140055170
mov dword [r15], ebx
movzx r13d, ax
test al, al
jne 0x140055939
xor r10d, r10d
mov eax, r10d
nop word [rax + rax]
cmp eax, edi
jae 0x14005592f
lea edx, [r14 + 4]
add edx, eax
lea ecx, [rax + 2]
movzx ecx, byte [rbp + rcx + 0x70]
inc eax
mov byte [rdx + r12], cl
inc dword [rsi]
cmp eax, 4
jb 0x140055910
add r14d, 4
cmp r14d, 0x40
jb 0x1400558c8
mov ecx, dword [r15 + 0x2c]
call fcn.140056a90
movzx eax, r13w
mov rcx, qword [rbp + 0xc0]
xor rcx, rsp
call fcn.140077b10
add rsp, 0x1d8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret