Function at 0x14012c8a0
Capabilities:
Check os version
Inspect section memory permissions
Query or enumerate registry value

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
sub rsp, 0x70
mov qword [rsp + 0x50], 0xfffffffffffffffe
mov rsi, rdx
mov rdi, rcx
test rdx, rdx
jne 0x14012c8c6
xor eax, eax
jmp 0x14012d6ba
mov qword [rcx + 0x10], rdx
lea rcx, [rdx + 0x2c]
xor edx, edx
lea r8d, [rdx + 0x40]
call fcn.1401601f0
xor ebp, ebp
mov dword [rsp + 0xa8], ebp
mov qword [rsp + 0x48], rbp
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SOFTWARERealtekGeneral
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14012c984
mov rbx, qword [rsp + 0x48]
mov dword [rsp + 0xb0], 4
lea rax, [rsp + 0xb0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0xb8]
xor r8d, r8d
lea rdx, str.HideAudioIcon
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x14012c976
cmp dword [rsp + 0xb8], 4
jne 0x14012c976
cmp dword [rsp + 0xa8], 1
jne 0x14012c976
or dword [rsi + 0x70], 0x400
test rbx, rbx
je 0x14012c984
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [rsi + 0x70]
bt eax, 0xa
jb 0x14012c9b8
bt eax, 0xe
jb 0x14012c9b8
bt dword [rsi + 0x15c], 0x11
jb 0x14012c9b8
cmp word [rsi + 0x44e], 0x103c
jne 0x14012c9b4
mov rcx, rdi
call fcn.140135120
test eax, eax
jne 0x14012c9b8
mov ecx, ebp
jmp 0x14012c9bd
mov ecx, 1
mov rax, qword [rdi + 0x10]
xor ecx, dword [rax + 0x2c]
and ecx, 1
xor dword [rax + 0x2c], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x70]
shr eax, 4
xor eax, dword [rcx + 0x2c]
and eax, 4
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x70]
shl eax, 4
xor eax, dword [rcx + 0x30]
and eax, 0x8000000
xor dword [rcx + 0x30], eax
mov rax, qword [rdi + 0x10]
or dword [rax + 0x30], 1
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x104]
shl eax, 0x12
xor eax, dword [rcx + 0x30]
and eax, 0x100000
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x10c]
shl eax, 0xd
xor eax, dword [rcx + 0x34]
and eax, 0x40000
xor dword [rcx + 0x34], eax
test byte [rsi + 0x104], 4
jne 0x14012ca40
test byte [rsi + 0x10c], 0x20
jne 0x14012ca40
mov ecx, ebp
jmp 0x14012ca45
mov ecx, 1
mov rax, qword [rdi + 0x10]
shl ecx, 0x13
xor ecx, dword [rax + 0x34]
and ecx, 0x80000
xor dword [rax + 0x34], ecx
test byte [rsi + 0x10c], 0x20
jne 0x14012ca6f
bt dword [rsi + 0x15c], 0x12
jb 0x14012ca6f
mov ecx, ebp
jmp 0x14012ca74
mov ecx, 1
mov rax, qword [rdi + 0x10]
shl ecx, 0x14
xor ecx, dword [rax + 0x34]
and ecx, 0x100000
xor dword [rax + 0x34], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x6c]
shr eax, 7
xor eax, dword [rcx + 0x30]
and eax, 0x200
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x104]
shl eax, 0x12
xor eax, dword [rcx + 0x30]
and eax, 0x20000000
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x104]
shr eax, 7
xor eax, dword [rcx + 0x2c]
and eax, 0x20
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x104]
shl eax, 0x10
xor eax, dword [rcx + 0x30]
and eax, 0x40000000
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x104]
shr eax, 4
xor eax, dword [rcx + 0x30]
and eax, 0x800
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov al, byte [rcx + 0x107]
xor eax, dword [rcx + 0x34]
and eax, 0x10
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x108]
shr eax, 0x16
xor eax, dword [rcx + 0x34]
and eax, 8
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x108]
shr eax, 8
xor eax, dword [rcx + 0x34]
and eax, 0x800
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x144]
mov dword [rcx + 0x64], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x108]
shr eax, 0xb
xor eax, dword [rcx + 0x34]
and eax, 0x8000
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shl eax, 0x15
xor eax, dword [rcx + 0x34]
and eax, 0x1000000
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x10c]
shr eax, 0x12
xor eax, dword [rcx + 0x34]
and eax, 0x100
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x10c]
shr eax, 5
xor eax, dword [rcx + 0x34]
and eax, 0x4000000
xor dword [rcx + 0x34], eax
test byte [rsi + 0x110], 0x10
je 0x14012cbc8
mov eax, dword [rsi + 0x12c]
test al, 8
jne 0x14012cbc1
bt eax, 8
jae 0x14012cbc8
mov ecx, 1
jmp 0x14012cbca
mov ecx, ebp
mov rax, qword [rdi + 0x10]
shl ecx, 0x1d
xor ecx, dword [rax + 0x34]
and ecx, 0x20000000
xor dword [rax + 0x34], ecx
test byte [rsi + 0x110], 0x10
je 0x14012cbf7
bt dword [rsi + 0xdc], 0x19
jae 0x14012cbf7
mov ecx, 1
jmp 0x14012cbf9
mov ecx, ebp
mov rax, qword [rdi + 0x10]
shl ecx, 0x19
xor ecx, dword [rax + 0x30]
and ecx, 0x2000000
xor dword [rax + 0x30], ecx
mov rcx, qword [rdi + 0x10]
mov eax, ebp
bt dword [rsi + 0x110], 0x19
setb al
xor eax, dword [rcx + 0x3c]
and eax, 1
xor dword [rcx + 0x3c], eax
mov rcx, qword [rdi + 0x10]
mov eax, ebp
bt dword [rsi + 0x70], 0x13
setb al
shl eax, 3
xor eax, dword [rcx + 0x3c]
and eax, 8
xor dword [rcx + 0x3c], eax
mov rcx, qword [rdi + 0x10]
mov eax, ebp
bt dword [rsi + 0x110], 0x1d
setb al
shl eax, 0xc
xor eax, dword [rcx + 0x30]
and eax, 0x1000
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, ebp
bt dword [rsi + 0x114], 0xb
setb al
shl eax, 7
xor eax, dword [rcx + 0x3c]
and eax, 0x80
xor dword [rcx + 0x3c], eax
bt dword [rsi + 0x104], 0x1a
jb 0x14012cc95
test byte [rsi + 0x187], 1
jne 0x14012cc95
mov eax, ebp
jmp 0x14012cc9a
mov eax, 1
mov rcx, qword [rdi + 0x10]
shl eax, 2
xor eax, dword [rcx + 0x34]
and eax, 4
xor dword [rcx + 0x34], eax
mov ecx, dword [rsi + 0x114]
shr ecx, 0x1b
and ecx, 1
mov rax, qword [rdi + 0x10]
mov dword [rax + 0x48], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shl eax, 0x13
xor eax, dword [rcx + 0x2c]
and eax, 0x800000
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shl eax, 8
xor eax, dword [rcx + 0x2c]
and eax, 0x1000
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shl eax, 0x11
xor eax, dword [rcx + 0x34]
and eax, 0x8000000
xor dword [rcx + 0x34], eax
test byte [rsi + 0x70], 0x80
jne 0x14012cd18
test byte [rsi + 0x15c], 0x40
jne 0x14012cd18
mov ecx, ebp
jmp 0x14012cd1d
mov ecx, 1
mov rax, qword [rdi + 0x10]
xor ecx, dword [rax + 0x4c]
and ecx, 1
xor dword [rax + 0x4c], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 6
xor eax, dword [rcx + 0x44]
and eax, 1
xor dword [rcx + 0x44], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 0x13
xor eax, dword [rcx + 0x2c]
and eax, 0x80
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, ebp
bt dword [rsi + 0x70], 0x1f
setb al
shl eax, 2
xor eax, dword [rcx + 0x3c]
and eax, 4
xor dword [rcx + 0x3c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shr eax, 0x13
xor eax, dword [rcx + 0x4c]
and eax, 2
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x6c]
shr eax, 0x13
xor eax, dword [rcx + 0x4c]
and eax, 4
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shr eax, 0x12
xor eax, dword [rcx + 0x4c]
and eax, 0x10
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 2
xor eax, dword [rcx + 0x4c]
and eax, 0x20
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x70]
shl eax, 9
xor eax, dword [rcx + 0x4c]
and eax, 0x200
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x70]
shl eax, 9
xor eax, dword [rcx + 0x4c]
and eax, 0x400
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shr eax, 0xd
xor eax, dword [rcx + 0x4c]
and eax, 0x800
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x118]
shr eax, 0x12
xor eax, dword [rcx + 0x4c]
and eax, 0x1000
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shl eax, 6
xor eax, dword [rcx + 0x4c]
and eax, 0x4000
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x11c]
shl eax, 0xb
xor eax, dword [rcx + 0x4c]
and eax, 0x8000
xor dword [rcx + 0x4c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x11c]
shr eax, 5
xor eax, dword [rcx + 0x50]
and eax, 1
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 8
xor eax, dword [rcx + 0x50]
and eax, 2
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x128]
shr eax, 6
xor eax, dword [rcx + 0x50]
and eax, 4
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 8
xor eax, dword [rcx + 0x2c]
and eax, 0x10
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 0xa
xor eax, dword [rcx + 0x50]
and eax, 8
xor dword [rcx + 0x50], eax
bt dword [rsi + 0x15c], 0xe
jb 0x14012ced7
bt dword [rsi + 0x1a8], 0xe
jb 0x14012ced7
mov ecx, ebp
jmp 0x14012cedc
mov ecx, 1
mov rax, qword [rdi + 0x10]
shl ecx, 4
xor ecx, dword [rax + 0x50]
and ecx, 0x10
xor dword [rax + 0x50], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x128]
shr eax, 0xa
xor eax, dword [rcx + 0x50]
and eax, 0x20
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x128]
shr eax, 9
xor eax, dword [rcx + 0x50]
and eax, 0x80
xor dword [rcx + 0x50], eax
bt dword [rsi + 0x70], 0xa
jb 0x14012cf39
bt dword [rsi + 0x15c], 0x11
jb 0x14012cf39
bt dword [rsi + 0x548], 0x16
jb 0x14012cf39
mov ecx, ebp
jmp 0x14012cf3e
mov ecx, 1
mov rax, qword [rdi + 0x10]
shl ecx, 8
xor ecx, dword [rax + 0x50]
and ecx, 0x100
xor dword [rax + 0x50], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shl eax, 9
xor eax, dword [rcx + 0x30]
and eax, 0x400
xor dword [rcx + 0x30], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 8
xor eax, dword [rcx + 0x50]
and eax, 0x800
xor dword [rcx + 0x50], eax
bt dword [rsi + 0x184], 0xe
jae 0x14012cfac
mov rax, qword [rdi + 0x10]
or dword [rax + 0x4c], 0x80
mov rax, qword [rdi + 0x10]
or dword [rax + 0x4c], 0x100
mov rax, qword [rdi + 0x10]
and dword [rax + 0x4c], 0xfffffdff
bt dword [rsi + 0x184], 0x11
jae 0x14012cfbe
mov rax, qword [rdi + 0x10]
or dword [rax + 0x4c], 0x40
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x1c8]
xor eax, dword [rcx + 0x50]
and eax, 0x1000
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x184]
shr eax, 0xf
xor eax, dword [rcx + 0x50]
and eax, 0x2000
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov ax, word [rsi + 0x186]
xor eax, dword [rcx + 0x50]
and eax, 0x8000
xor dword [rcx + 0x50], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x188]
shl eax, 0xe
xor eax, dword [rcx + 0x50]
and eax, 0x10000
xor dword [rcx + 0x50], eax
mov ecx, dword [rsi + 0x180]
shr ecx, 0x19
and ecx, 1
mov rax, qword [rdi + 0x10]
mov dword [rax + 0x54], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 7
xor eax, dword [rcx + 0x2c]
and eax, 0x40000
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 8
xor eax, dword [rcx + 0x58]
and eax, 4
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 7
xor eax, dword [rcx + 0x58]
and eax, 8
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x15c]
shr eax, 0x1b
xor eax, dword [rcx + 0x58]
and eax, 0x10
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x190]
shr eax, 3
xor eax, dword [rcx + 0x58]
and eax, 0x40
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x190]
shr eax, 2
xor eax, dword [rcx + 0x58]
and eax, 0x80
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x160]
shl eax, 0xf
xor eax, dword [rcx + 0x34]
and eax, 0x10000
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x190]
shr eax, 3
xor eax, dword [rcx + 0x58]
and eax, 0x100
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x160]
shl eax, 7
xor eax, dword [rcx + 0x58]
and eax, 0x200
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rsi + 0x190]
shr eax, 0xa
xor eax, dword [rcx + 0x58]
and eax, 0x400
xor dword [rcx + 0x58], eax
bt dword [rsi + 0x190], 0x1e
jae 0x14012d15a
mov eax, dword [0x14022c3f4]
test eax, eax
jne 0x14012d145
mov dword [0x14022c3f0], 0x114
lea rcx, [0x14022c3f0]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [0x14022c3f4]
cmp eax, 6
jne 0x14012d15a
cmp dword [0x14022c3f8], 2
jne 0x14012d15a
mov eax, 1
jmp 0x14012d15c
mov eax, ebp
mov rcx, qword [rdi + 0x10]
add eax, eax
xor eax, dword [rcx + 0x5c]
and eax, 2
xor dword [rcx + 0x5c], eax
mov eax, dword [rsi + 0x220]
mov ecx, 0x15e
test eax, eax
cmovne ecx, eax
mov rax, qword [rdi + 0x10]
mov dword [rax + 0x68], ecx
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x18c]
shr eax, 6
xor eax, dword [rcx + 0x58]
and eax, 0x800
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shl eax, 9
xor eax, dword [rcx + 0x58]
and eax, 0x1000
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shl eax, 9
xor eax, dword [rcx + 0x58]
and eax, 0x2000
xor dword [rcx + 0x58], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shr eax, 5
xor eax, dword [rcx + 0x5c]
and eax, 1
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1cc]
shl eax, 2
xor eax, dword [rcx + 0x5c]
and eax, 4
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1cc]
shl eax, 2
xor eax, dword [rcx + 0x5c]
and eax, 8
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x194]
shl eax, 4
xor eax, dword [rcx + 0x5c]
and eax, 0x10
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x194]
shr eax, 3
xor eax, dword [rcx + 0x5c]
and eax, 0x20
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x194]
shr eax, 8
xor eax, dword [rcx + 0x5c]
and eax, 0x40
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x194]
shr eax, 0xc
xor eax, dword [rcx + 0x5c]
and eax, 0x80
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shl eax, 2
xor eax, dword [rcx + 0x5c]
and eax, 0x100
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x180]
shr eax, 9
xor eax, dword [rcx + 0x34]
and eax, 0x20
xor dword [rcx + 0x34], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x6c]
shr eax, 4
xor eax, dword [rcx + 0x2c]
and eax, 0x100000
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shl eax, 4
xor eax, dword [rcx + 0x5c]
and eax, 0x800
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
xor eax, dword [rcx + 0x5c]
and eax, 0x1000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
xor eax, dword [rcx + 0x5c]
and eax, 0x2000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
xor eax, dword [rcx + 0x5c]
and eax, 0x4000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
shr eax, 3
xor eax, dword [rcx + 0x5c]
and eax, 0x20000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
shr eax, 5
xor eax, dword [rcx + 0x5c]
and eax, 0x40000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
shr eax, 6
xor eax, dword [rcx + 0x5c]
and eax, 0x80000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1a0]
xor eax, dword [rcx + 0x5c]
and eax, 0x100000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1a0]
shr eax, 2
xor eax, dword [rcx + 0x5c]
and eax, 0x200000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
shr eax, 9
xor eax, dword [rcx + 0x5c]
and eax, 0x400000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1a0]
shr eax, 2
xor eax, dword [rcx + 0x5c]
and eax, 0x800000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x160]
shl eax, 0xf
xor eax, dword [rcx + 0x5c]
and eax, 0x1000000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x19c]
shr eax, 6
xor eax, dword [rcx + 0x5c]
and eax, 0x2000000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0xd4]
shl eax, 0xa
xor eax, dword [rcx + 0x5c]
and eax, 0x4000000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1a0]
shr eax, 4
xor eax, dword [rcx + 0x5c]
and eax, 0x8000000
xor dword [rcx + 0x5c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1a8]
shr eax, 0x15
xor eax, dword [rcx + 0x2c]
and eax, 8
xor dword [rcx + 0x2c], eax
mov rcx, qword [rdi + 0x10]
mov eax, dword [rcx + 0x1dc]
shr eax, 0xc
xor eax, dword [rcx + 0x30]
and eax, 0x8000
xor dword [rcx + 0x30], eax
lea r12, [0x140000000]
cmp qword [rdi + 0x10], rbp
je 0x14012d49c
mov rcx, qword [0x14022c510]
test rcx, rcx
je 0x14012d49c
mov dword [rsp + 0x40], ebp
lea rdx, [rsp + 0x60]
mov rax, qword [r12 + 0x1ab248]
mov qword [rdx], rax
mov rax, qword [r12 + 0x1ab250]
mov qword [rdx + 8], rax
lea rbx, [rdi + 0x18]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 4
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea r8d, [r9 + 0x15]
lea rdx, [rsp + 0x60]
call fcn.14008acf0
test eax, eax
jne 0x14012d4a2
lea rbx, [rdi + 0x18]
mov dword [rbx], ebp
movzx r11d, word [rsi + 0x44a]
movzx r10d, word [rsi + 0x448]
mov eax, r11d
shl eax, 0x10
or r10d, eax
movzx r9d, word [rsi + 0x44e]
shl r9d, 0x10
movzx eax, word [rsi + 0x44c]
or r9d, eax
mov r8d, ebp
lea rcx, [0x1401a6818]
nop
nop
mov edx, dword [rcx - 8]
test edx, edx
je 0x14012d51e
sub edx, 1
je 0x14012d517
sub edx, 1
je 0x14012d50f
sub edx, 1
je 0x14012d502
cmp edx, 1
jne 0x14012d525
cmp r11d, dword [rcx]
je 0x14012d539
jmp 0x14012d525
cmp r10d, dword [rcx]
jne 0x14012d525
cmp r9d, dword [rcx + 4]
je 0x14012d539
jmp 0x14012d525
cmp r9d, dword [rcx + 4]
je 0x14012d539
jmp 0x14012d525
cmp r10d, dword [rcx]
je 0x14012d539
jmp 0x14012d525
mov eax, dword [rbx]
cmp dword [rcx - 4], eax
je 0x14012d539
add r8d, 1
add rcx, 0x14
cmp r8d, 0x5d
jae 0x14012d65b
jmp 0x14012d4e0
movsxd rax, r8d
lea rcx, [rax + rax*4]
mov edx, dword [r12 + rcx*4 + 0x1a6820]
test edx, edx
je 0x14012d62e
sub edx, 1
je 0x14012d5ff
sub edx, 1
je 0x14012d5d0
sub edx, 1
je 0x14012d59e
cmp edx, 1
jne 0x14012d65b
mov ecx, 0x228
call fcn.14013c710
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x14012d595
mov r8d, dword [rbx]
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.140136ef0
mov rbp, rax
mov qword [rdi + 8], rbp
jmp 0x14012d65b
mov ecx, 0x88
call fcn.14013c710
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x14012d5c7
mov r8d, dword [rbx]
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.140136770
mov rbp, rax
mov qword [rdi + 8], rbp
jmp 0x14012d65b
mov ecx, 0x220
call fcn.14013c710
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x14012d5f9
mov r8d, dword [rbx]
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.140135460
mov rbp, rax
mov qword [rdi + 8], rbp
jmp 0x14012d65b
mov ecx, 0xe8
call fcn.14013c710
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x14012d628
mov r8d, dword [rbx]
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.140139b20
mov rbp, rax
mov qword [rdi + 8], rbp
jmp 0x14012d65b
mov ecx, 0x1d0
call fcn.14013c710
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x14012d657
mov r8d, dword [rbx]
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.1401291a0
mov rbp, rax
mov qword [rdi + 8], rbp
mov rax, qword [rdi + 0x10]
bt dword [rax + 0xd0], 0x1a
jae 0x14012d67b
and dword [rax + 0x2c], 0xfffff7ff
mov rax, qword [rdi + 0x10]
or dword [rax + 0x2c], 0x200000
mov rax, qword [rdi + 0x10]
bt dword [rax + 0x34], 0x13
jae 0x14012d6b5
or dword [rax + 0x30], 0x80000
mov rcx, qword [rdi + 0x10]
bt dword [rcx + 0x30], 0x14
jae 0x14012d69f
or dword [rcx + 0x30], 0x800000
mov rcx, qword [rdi + 0x10]
and dword [rcx + 0x30], 0xffdfffff
mov rcx, qword [rdi + 0x10]
or dword [rcx + 0x30], 0x1000000
mov eax, 1
add rsp, 0x70
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret