Function at 0x180019a00
Capabilities:
Check if process is running under wine

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x7e8]
sub rsp, 0x8e8
movaps xmmword [rsp + 0x8d0], xmm6
mov rax, qword [0x18006e068]
xor rax, rsp
mov qword [rbp + 0x7c0], rax
mov r13d, r9d
mov dword [rsp + 0x40], r9d
mov r15, r8
mov qword [rbp - 0x80], r8
mov r14, rdx
mov qword [rsp + 0x68], rdx
mov rsi, rcx
mov ebx, dword [rbp + 0x858]
mov r12, qword [rbp + 0x850]
mov qword [rsp + 0x78], r12
xor eax, eax
mov edi, eax
test rdx, rdx
jne 0x180019a74
bt ebx, 0xa
jae 0x18001a940
mov eax, ebx
btr eax, 0x1f
test ebx, ebx
cmovns eax, ebx
mov dword [rsp + 0x50], eax
shr ebx, 0x1f
test r14, r14
je 0x180019aa5
mov rax, qword [rdx]
xor r8d, r8d
mov edx, 0x59555678
mov rcx, r14
call qword [rax + 0x40]
test rax, rax
jne 0x18001a166
test dword [rsi + 0x20], 0x400
je 0x180019b21
cmp qword [rsi + 0xa60], rdi
je 0x180019b21
test bl, bl
jne 0x180019b21
mov eax, dword [0x18006eb50]
test eax, eax
jns 0x180019b03
lea r8, [rsp + 0x70]
lea rdx, str.SoftwareWine
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x180019ba8
mov dword [0x18006eb50], 1
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x18006eb50]
test eax, eax
jg 0x180019b21
mov eax, dword [rsp + 0x50]
bt eax, 0x1e
jb 0x180019b21
test dword [rsi + 0x20], 0x1f7
jne 0x180019b21
cmp dword [rsi + 0x28], edi
je 0x180019b2e
test al, 0x20
jne 0x180019b2e
cmp dword [rsi + 0x24], 0x100
jl 0x18001a166
xor r8d, r8d
mov r13d, r8d
test r15, r15
je 0x180019c67
movzx edx, byte [r15]
test dl, dl
je 0x180019c67
lea rcx, [r15 + 1]
nop dword [rax]
cmp dl, 0xc2
jb 0x180019b97
cmp dl, 0xdf
ja 0x180019b65
movzx eax, byte [rcx]
cmp al, 0x80
jb 0x180019b6a
cmp al, 0xbf
jbe 0x180019bb5
cmp dl, 0xef
ja 0x180019b7f
movzx eax, byte [rcx]
sub al, 0x80
cmp al, 0x3f
ja 0x180019b84
movzx eax, byte [rcx + 1]
cmp al, 0x80
jb 0x180019b84
cmp al, 0xbf
jbe 0x180019bb5
cmp dl, 0xf4
ja 0x180019b97
movzx eax, byte [rcx]
sub al, 0x80
cmp al, 0x3f
ja 0x180019b97
movzx eax, byte [rcx + 1]
sub al, 0x80
cmp al, 0x3f
jbe 0x180019bb5
inc rcx
movzx edx, byte [rcx - 1]
test dl, dl
je 0x180019c67
jmp 0x180019b50
xor eax, eax
mov dword [0x18006eb50], eax
jmp 0x180019b05
mov dword [rsp + 0x28], r8d
mov qword [rsp + 0x20], r8
mov r9d, dword [rsp + 0x40]
mov r8, r15
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
cmp eax, 0x3e8
jge 0x180019c1e
mov dword [rsp + 0x28], 0x400
lea rax, [rbp - 0x40]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x40]
mov r8, r15
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor r8d, r8d
test eax, eax
je 0x180019c67
lea r13, [rbp - 0x40]
cdqe
mov word [rbp + rax*2 - 0x40], r8w
jmp 0x180019c67
add eax, 0x20
movsxd rcx, eax
add rcx, rcx
call fcn.1800396a4
mov r13, rax
test rax, rax
je 0x180019c64
lea ecx, [rbx + 1]
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x40]
mov r8, r15
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x180019c7a
mov rcx, r13
call fcn.18003609c
xor r8d, r8d
test r14, r14
je 0x180019c89
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x38]
mov r14, rax
jmp 0x180019c8c
jle 0x180019c64
cdqe
xor r8d, r8d
mov word [r13 + rax*2], r8w
jmp 0x180019c67
mov r14, r8
xorps xmm0, xmm0
movups xmmword [rbp - 0x68], xmm0
mov byte [rsp + 0x54], dil
xorps xmm1, xmm1
movups xmmword [rsp + 0x58], xmm1
test r14, r14
jne 0x18001a00d
mov byte [rsp + 0x54], 1
mov rbx, qword [0x1800704a8]
test rbx, rbx
jne 0x180019d09
lea ecx, [rbx + 0x38]
call fcn.18002d9ec
mov rbx, rax
mov qword [rsp + 0x48], rax
lea rax, vtable.LICE_SysBitmap.0
mov qword [rbx], rax
mov qword [rbx + 0x20], r14
xor ecx, ecx
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x28], r14
mov qword [rbx + 0x30], r14
mov qword [rbx + 0x18], r14
mov qword [rbx + 8], r14
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1800116a0
nop
mov qword [0x1800704a8], rbx
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
cmp eax, 4
jl 0x180019d29
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 4
jge 0x180019d3e
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
mov edx, 4
mov r8d, edx
call qword [rax + 0x30]
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov r14, rax
test rax, rax
je 0x18001a14e
mov rdx, qword [rsi + 0xa60]
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x70], rax
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x50], xmm0
mov ecx, dword [rsp + 0x50]
and ecx, 0xfffffff0
or ecx, 0xc00
mov dword [rsp + 0x20], ecx
lea r9, [rbp - 0x50]
mov rcx, r14
test r13, r13
je 0x180019da2
mov r8d, 0xffffffff
mov rdx, r13
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x180019db0
mov r8d, dword [rsp + 0x40]
mov rdx, r15
call qword [sym.imp.USER32.dll_DrawTextA]
mov dword [rsp + 0x48], eax
mov r9d, dword [rsp + 0x50]
bt r9d, 0xa
jae 0x180019de4
mov eax, dword [r12]
sub eax, dword [rbp - 0x50]
add eax, dword [rbp - 0x48]
mov dword [r12 + 8], eax
mov eax, dword [r12 + 4]
sub eax, dword [rbp - 0x4c]
add eax, dword [rbp - 0x44]
mov dword [r12 + 0xc], eax
jmp 0x18001a13c
mov r8, qword [rsp + 0x68]
test r8, r8
je 0x18001a13c
mov ecx, dword [rbp - 0x48]
test r9b, 2
je 0x180019fc2
mov edi, dword [r12 + 8]
sub edi, ecx
mov dword [rsp + 0x58], edi
lea r12d, [rdi + rcx]
mov dword [rsp + 0x60], r12d
mov ecx, dword [rbp - 0x44]
mov rax, qword [rsp + 0x78]
test r9b, 8
je 0x180019fe9
mov ebx, dword [rax + 0xc]
sub ebx, ecx
mov dword [rsp + 0x5c], ebx
lea r15d, [rbx + rcx]
mov dword [rsp + 0x64], r15d
mov rax, qword [r8]
mov rcx, r8
call qword [rax + 0x10]
cmp r12d, eax
jle 0x180019e57
mov rcx, qword [rsp + 0x68]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov r12d, eax
mov dword [rsp + 0x60], eax
mov rax, qword [rsp + 0x68]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
cmp r15d, eax
jle 0x180019e7f
mov rax, qword [rsp + 0x68]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
mov r15d, eax
mov dword [rsp + 0x64], eax
xor r9d, r9d
mov eax, r9d
mov edx, r9d
mov ecx, dword [rsp + 0x50]
bt ecx, 8
jb 0x180019eca
mov r8, qword [rsp + 0x78]
cmp r12d, dword [r8 + 8]
cmovg r12d, dword [r8 + 8]
mov dword [rsp + 0x60], r12d
cmp r15d, dword [r8 + 0xc]
cmovg r15d, dword [r8 + 0xc]
mov dword [rsp + 0x64], r15d
mov eax, dword [r8]
test eax, eax
cmovle eax, r9d
mov ecx, dword [r8 + 4]
test ecx, ecx
jle 0x180019ec6
mov edx, ecx
mov ecx, dword [rsp + 0x50]
cmp edi, eax
jge 0x180019ed9
sub edi, eax
mov dword [rbp - 0x68], edi
mov edi, eax
mov dword [rsp + 0x58], eax
cmp ebx, edx
jge 0x180019ee8
sub ebx, edx
mov dword [rbp - 0x64], ebx
mov ebx, edx
mov dword [rsp + 0x5c], edx
cmp r15d, ebx
jle 0x18001a13c
cmp r12d, edi
jle 0x18001a13c
and ecx, 0xfffffef0
mov dword [rsp + 0x50], ecx
mov eax, r12d
sub eax, edi
mov dword [rsp + 0x48], eax
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp dword [rsp + 0x48], eax
jg 0x180019f36
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov ecx, r15d
sub ecx, ebx
cmp ecx, eax
jle 0x180019f80
mov rdx, qword [rsp + 0x70]
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
mov r8d, r15d
sub r8d, ebx
mov edx, dword [rsp + 0x48]
call qword [rax + 0x30]
mov rcx, qword [0x1800704a8]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov r14, rax
mov rdx, qword [rsi + 0xa60]
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x70], rax
xor eax, eax
mov dword [rsp + 0x30], eax
movss xmm0, dword [0x180064328]
movss dword [rsp + 0x28], xmm0
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x68]
mov rcx, qword [0x1800704a8]
call fcn.180011810
mov dword [rbp - 0x60], r12d
mov dword [rbp - 0x5c], r15d
jmp 0x18001a045
mov edi, dword [r12]
test r9b, 1
je 0x180019e06
mov eax, dword [r12 + 8]
sub eax, ecx
add eax, edi
cdq
sub eax, edx
sar eax, 1
mov edi, eax
mov dword [rsp + 0x58], eax
jmp 0x180019e0a
mov ebx, dword [rax + 4]
test r9b, 4
je 0x180019e2a
mov eax, dword [rax + 0xc]
sub eax, ecx
add eax, ebx
cdq
sub eax, edx
sar eax, 1
mov ebx, eax
mov dword [rsp + 0x5c], eax
jmp 0x180019e2e
mov rdx, qword [rsi + 0xa60]
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x70], rax
movups xmm0, xmmword [r12]
movups xmmword [rbp - 0x68], xmm0
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x50], eax
mov r15d, dword [rsp + 0x64]
mov r12d, dword [rsp + 0x60]
mov ebx, dword [rsp + 0x5c]
mov edi, dword [rsp + 0x58]
movzx edx, byte [rsi + 9]
shl edx, 8
movzx eax, byte [rsi + 8]
shl eax, 0x10
or edx, eax
movzx eax, byte [rsi + 0xa]
or edx, eax
mov rcx, r14
call qword [sym.imp.GDI32.dll_SetTextColor]
mov edx, dword [rsi + 0x14]
mov rcx, r14
call qword [sym.imp.GDI32.dll_SetBkMode]
cmp dword [rsi + 0x14], 2
jne 0x18001a095
movzx edx, byte [rsi + 0xd]
shl edx, 8
movzx eax, byte [rsi + 0xc]
shl eax, 0x10
or edx, eax
movzx eax, byte [rsi + 0xe]
or edx, eax
mov rcx, r14
call qword [sym.imp.GDI32.dll_SetBkColor]
mov eax, dword [rsp + 0x50]
bts eax, 0xb
mov dword [rsp + 0x20], eax
lea r9, [rbp - 0x68]
mov rcx, r14
test r13, r13
je 0x18001a0be
mov r8d, 0xffffffff
mov rdx, r13
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x18001a0cd
mov r8d, dword [rsp + 0x40]
mov rdx, qword [rbp - 0x80]
call qword [sym.imp.USER32.dll_DrawTextA]
mov dword [rsp + 0x48], eax
cmp byte [rsp + 0x54], 0
je 0x18001a121
xor eax, eax
mov qword [rsp + 0x58], rax
sub r12d, edi
mov dword [rsp + 0x60], r12d
sub r15d, ebx
mov dword [rsp + 0x64], r15d
mov dword [rsp + 0x30], eax
movss xmm0, dword [rsi + 0x1c]
movss dword [rsp + 0x28], xmm0
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
mov r9d, ebx
mov r8d, edi
mov rdx, qword [0x1800704a8]
mov rcx, qword [rsp + 0x68]
call fcn.180011810
jmp 0x18001a137
test dword [rsp + 0x50], 0x400
je 0x18001a137
movups xmm0, xmmword [rbp - 0x68]
mov rax, qword [rsp + 0x78]
movups xmmword [rax], xmm0
test r14, r14
je 0x18001a14a
mov rdx, qword [rsp + 0x70]
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [rsp + 0x48]
lea rax, [rbp - 0x40]
cmp r13, rax
je 0x18001a15f
mov rcx, r13
call fcn.18003609c
mov eax, edi
jmp 0x18001a940
mov r10d, dword [rsp + 0x50]
bt r10d, 0xa
jae 0x18001a44a
xor eax, eax
mov r11d, eax
mov dword [rsp + 0x48], eax
mov r12d, eax
mov r13d, eax
mov r14d, eax
movzx ecx, byte [r15]
test cl, cl
je 0x18001a424
lea r9d, [rax + 0x20]
mov ebx, dword [rsp + 0x40]
nop dword [rax]
test ebx, ebx
je 0x18001a424
cmp cl, 0x80
jb 0x18001a263
cmp cl, 0xc2
jb 0x18001a263
cmp cl, 0xe0
jae 0x18001a1ec
movzx r9d, byte [r15 + 1]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x18001a263
mov edx, 2
and cl, 0x1f
movzx edi, cl
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x18001a26b
cmp cl, 0xf0
jae 0x18001a233
movzx r10d, byte [r15 + 1]
lea eax, [r10 - 0x80]
cmp al, 0x40
ja 0x18001a263
movzx r9d, byte [r15 + 2]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x18001a263
mov edx, 3
and r10b, 0x3f
movzx edi, r10b
movzx eax, cl
shl ax, 6
or di, ax
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x18001a26b
cmp cl, 0xf5
jae 0x18001a263
movzx eax, byte [r15 + 1]
sub al, 0x80
cmp al, 0x40
ja 0x18001a263
movzx eax, byte [r15 + 2]
sub al, 0x80
cmp al, 0x40
ja 0x18001a263
movzx eax, byte [r15 + 3]
sub al, 0x80
cmp al, 0x40
ja 0x18001a263
mov edx, 4
mov edi, r9d
jmp 0x18001a26b
mov edx, 1
movzx edi, cl
mov r8d, edx
add r15, rdx
test ebx, ebx
jle 0x18001a285
sub ebx, edx
mov ecx, 0
cmovs ebx, ecx
mov dword [rsp + 0x40], ebx
jmp 0x18001a287
xor ecx, ecx
cmp di, 0xd
je 0x18001a412
cmp di, 0xa
jne 0x18001a2a7
mov r10d, dword [rsp + 0x50]
test r10b, 0x20
je 0x18001a30d
mov edi, 0x20
movzx edx, di
mov rcx, rsi
call fcn.180018590
mov rbx, rax
test rax, rax
jne 0x18001a38d
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ebx, edx
shr ebx, 4
movzx edx, di
mov rcx, rsi
call fcn.180017ce0
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
shr edx, 4
cmp edx, ebx
je 0x18001a409
mov eax, 0x80
cmp di, ax
jae 0x18001a338
movzx eax, di
lea rbx, [rax*4 + 0xb]
add rbx, rax
lea rbx, [rsi + rbx*4]
jmp 0x18001a388
mov eax, dword [rsi + 0x28]
add eax, dword [rsi + 0x24]
test byte [rsi + 0x20], 1
je 0x18001a329
add r11d, eax
mov dword [rsp + 0x48], r11d
mov r12d, ecx
jmp 0x18001a412
add r12d, eax
mov r11d, ecx
mov dword [rsp + 0x48], ecx
jmp 0x18001a412
test edx, edx
je 0x18001a409
xor ecx, ecx
mov qword [rbp - 0x68], rcx
mov qword [rbp - 0x60], rcx
movzx eax, di
mov dword [rbp - 0x58], eax
cmp dword [rsi + 0xa3c], ecx
je 0x18001a361
mov rax, qword [rsi + 0xa30]
jmp 0x18001a364
mov rax, rcx
mov r8d, edx
lea rcx, [0x1800179e0]
mov qword [rsp + 0x20], rcx
mov r9d, 0x14
mov rdx, rax
lea rcx, [rbp - 0x68]
call fcn.18003e6d0
mov rbx, rax
test rbx, rbx
je 0x18001a409
mov eax, dword [rbx]
test eax, eax
js 0x18001a409
jne 0x18001a3a4
movzx edx, di
mov rcx, rsi
call fcn.180017ce0
mov eax, dword [rbx]
test eax, eax
mov r11d, dword [rsp + 0x48]
jle 0x18001a40e
test byte [rsi + 0x20], 1
je 0x18001a3dd
mov edx, dword [rbx + 8]
add edx, r12d
add r12d, dword [rbx + 0xc]
mov ecx, dword [rbx + 4]
add ecx, r11d
cmp ecx, r13d
cmovg r13d, ecx
cmp r12d, r14d
cmovg r14d, r12d
mov ebx, dword [rsp + 0x40]
cmp edx, r14d
jle 0x18001a412
mov r14d, edx
jmp 0x18001a412
mov edx, dword [rbx + 4]
add edx, r11d
add r11d, dword [rbx + 0xc]
mov dword [rsp + 0x48], r11d
mov ecx, dword [rbx + 8]
add ecx, r12d
cmp ecx, r14d
cmovg r14d, ecx
cmp r11d, r13d
cmovg r13d, r11d
cmp edx, r13d
cmovg r13d, edx
jmp 0x18001a40e
mov r11d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x40]
movzx ecx, byte [r15]
test cl, cl
mov r9d, 0x20
jne 0x18001a1a0
mov rax, qword [rsp + 0x78]
mov edx, dword [rax]
add edx, r13d
mov dword [rax + 8], edx
mov edx, dword [rax + 4]
add edx, r14d
mov dword [rax + 0xc], edx
test byte [rsi + 0x20], 1
cmovne r14d, r13d
mov eax, r14d
jmp 0x18001a940
movss xmm6, dword [rsi + 0x1c]
movaps xmm1, xmm6
bt r10d, 0x1e
jae 0x18001a47d
movzx eax, byte [rsi + 0xb]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, qword [0x1800643c0]
cvtps2pd xmm0, xmm6
mulsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [rsi + 0x1c], xmm1
xorps xmm0, xmm0
ucomiss xmm1, xmm0
jp 0x18001a48b
je 0x18001a62b
movups xmm0, xmmword [r12]
movups xmmword [rbp - 0x78], xmm0
movd r8d, xmm0
mov r12d, r8d
movq r14, xmm0
shr r14, 0x20
mov edi, dword [rsi + 0x20]
and edi, 3
mov dword [rbp - 0x80], edi
test r10b, 0xf
je 0x18001a55a
xorps xmm0, xmm0
movups xmmword [rbp - 0x68], xmm0
movzx ecx, bl
shl ecx, 0x1f
mov eax, r10d
and eax, 0x20
or ecx, eax
bts ecx, 0xa
mov dword [rsp + 0x28], ecx
lea rax, [rbp - 0x68]
mov qword [rsp + 0x20], rax
mov r9d, r13d
mov r8, r15
mov rbx, qword [rsp + 0x68]
mov rdx, rbx
mov rcx, rsi
call fcn.180019a00
mov r8d, dword [rbp - 0x78]
mov r10d, dword [rsp + 0x50]
test r10b, 1
je 0x18001a516
mov eax, dword [rbp - 0x70]
sub eax, dword [rbp - 0x60]
sub eax, r8d
cdq
sub eax, edx
sar eax, 1
add r12d, eax
jmp 0x18001a524
test r10b, 2
je 0x18001a524
mov r12d, dword [rbp - 0x70]
sub r12d, dword [rbp - 0x60]
mov ecx, dword [rbp - 0x74]
mov r9d, dword [rbp - 0x5c]
test r10b, 4
je 0x18001a543
mov eax, dword [rbp - 0x6c]
sub eax, r9d
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add r14d, eax
jmp 0x18001a550
test r10b, 8
je 0x18001a550
mov r14d, dword [rbp - 0x6c]
sub r14d, r9d
cmp edi, 3
jne 0x18001a5b2
add r14d, r9d
jmp 0x18001a5b2
cmp edi, 3
jne 0x18001a5aa
xorps xmm0, xmm0
movups xmmword [rbp - 0x68], xmm0
movzx ecx, bl
shl ecx, 0x1f
mov eax, r10d
and eax, 0x20
or ecx, eax
bts ecx, 0xa
mov dword [rsp + 0x28], ecx
lea rax, [rbp - 0x68]
mov qword [rsp + 0x20], rax
mov r9d, r13d
mov r8, r15
mov rbx, qword [rsp + 0x68]
mov rdx, rbx
mov rcx, rsi
call fcn.180019a00
add r14d, dword [rbp - 0x5c]
mov r8d, dword [rbp - 0x78]
mov r10d, dword [rsp + 0x50]
jmp 0x18001a5af
mov rbx, qword [rsp + 0x68]
mov ecx, dword [rbp - 0x74]
mov dword [rsp + 0x78], r14d
mov dword [rsp + 0x70], r12d
mov r13d, r14d
mov edi, r12d
mov dword [rsp + 0x48], r12d
bt r10d, 8
jb 0x18001a632
test r8d, r8d
mov eax, 0
cmovs r8d, eax
mov dword [rbp - 0x78], r8d
test ecx, ecx
cmovs ecx, eax
mov dword [rbp - 0x74], ecx
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
cmp dword [rbp - 0x70], eax
jle 0x18001a600
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
mov dword [rbp - 0x70], eax
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov edx, dword [rbp - 0x6c]
cmp edx, eax
jle 0x18001a61e
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov edx, eax
mov dword [rbp - 0x6c], eax
mov ecx, dword [rbp - 0x78]
cmp dword [rbp - 0x70], ecx
jle 0x18001a62b
cmp edx, dword [rbp - 0x74]
jg 0x18001a650
xor eax, eax
jmp 0x18001a93b
xor eax, eax
mov qword [rbp - 0x78], rax
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
mov dword [rbp - 0x70], eax
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov dword [rbp - 0x6c], eax
movzx ecx, byte [r15]
test cl, cl
je 0x18001a927
mov ebx, 0x20
mov r11d, dword [rsp + 0x40]
test r11d, r11d
je 0x18001a927
cmp cl, 0x80
jb 0x18001a729
cmp cl, 0xc2
jb 0x18001a729
cmp cl, 0xe0
jae 0x18001a6b3
movzx r9d, byte [r15 + 1]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x18001a729
mov edx, 2
and cl, 0x1f
movzx edi, cl
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x18001a731
cmp cl, 0xf0
jae 0x18001a6fa
movzx r10d, byte [r15 + 1]
lea eax, [r10 - 0x80]
cmp al, 0x40
ja 0x18001a729
movzx r9d, byte [r15 + 2]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x18001a729
mov edx, 3
and r10b, 0x3f
movzx edi, r10b
movzx eax, cl
shl ax, 6
or di, ax
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x18001a731
cmp cl, 0xf5
jae 0x18001a729
movzx eax, byte [r15 + 1]
sub al, 0x80
cmp al, 0x40
ja 0x18001a729
movzx eax, byte [r15 + 2]
sub al, 0x80
cmp al, 0x40
ja 0x18001a729
movzx eax, byte [r15 + 3]
sub al, 0x80
cmp al, 0x40
ja 0x18001a729
mov edx, 4
mov edi, ebx
jmp 0x18001a731
mov edx, 1
movzx edi, cl
mov r8d, edx
add r15, rdx
test r11d, r11d
jle 0x18001a74d
sub r11d, edx
mov eax, 0
cmovs r11d, eax
mov dword [rsp + 0x40], r11d
cmp di, 0xd
je 0x18001a917
cmp di, 0xa
jne 0x18001a767
test byte [rsp + 0x50], 0x20
je 0x18001a7cf
movzx edi, bx
movzx edx, di
mov rcx, rsi
call fcn.180018590
mov rbx, rax
test rax, rax
jne 0x18001a84a
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ebx, edx
shr ebx, 4
movzx edx, di
mov rcx, rsi
call fcn.180017ce0
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ecx, edx
shr ecx, 4
cmp ecx, ebx
je 0x18001a90d
mov eax, 0x80
cmp di, ax
jae 0x18001a7f9
movzx eax, di
lea rbx, [rax*4 + 0xb]
add rbx, rax
lea rbx, [rsi + rbx*4]
jmp 0x18001a841
mov eax, dword [rsi + 0x28]
add eax, dword [rsi + 0x24]
mov edi, dword [rsp + 0x48]
test byte [rsi + 0x20], 1
je 0x18001a7ec
add r12d, eax
mov r14d, dword [rsp + 0x78]
jmp 0x18001a91b
add r14d, eax
mov r12d, dword [rsp + 0x70]
jmp 0x18001a91b
test ecx, ecx
je 0x18001a90d
xor edx, edx
mov qword [rbp - 0x68], rdx
mov qword [rbp - 0x60], rdx
movzx eax, di
mov dword [rbp - 0x58], eax
cmp dword [rsi + 0xa3c], edx
je 0x18001a820
mov rdx, qword [rsi + 0xa30]
mov r8d, ecx
lea rax, [0x1800179e0]
mov qword [rsp + 0x20], rax
mov r9d, 0x14
lea rcx, [rbp - 0x68]
call fcn.18003e6d0
mov rbx, rax
test rbx, rbx
je 0x18001a90d
mov eax, dword [rbx]
test eax, eax
js 0x18001a90d
jne 0x18001a865
movzx edx, di
mov rcx, rsi
call fcn.180017ce0
mov eax, dword [rbx]
test eax, eax
jle 0x18001a90d
cmp eax, dword [rsi + 0xa54]
jge 0x18001a90d
cmp dword [rbp - 0x80], 3
jne 0x18001a881
sub r14d, dword [rbx + 8]
mov rax, qword [rsi]
lea rcx, [rbp - 0x78]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], r14d
mov r9d, r12d
movzx r8d, di
mov rdx, qword [rsp + 0x68]
mov rcx, rsi
call qword [rax + 0x58]
movzx ecx, al
test byte [rsi + 0x20], 1
je 0x18001a8e8
cmp dword [rbp - 0x80], 3
je 0x18001a8b9
add r14d, dword [rbx + 0xc]
jmp 0x18001a8c2
mov eax, dword [rbx + 8]
sub eax, dword [rbx + 0xc]
add r14d, eax
mov edi, dword [rsp + 0x48]
mov r11d, dword [rsp + 0x40]
test cl, cl
je 0x18001a906
mov ecx, dword [rbx + 4]
add ecx, r12d
mov ebx, 0x20
cmp ecx, edi
jle 0x18001a91b
mov edi, r12d
mov dword [rsp + 0x48], r12d
jmp 0x18001a91b
add r12d, dword [rbx + 0xc]
mov r11d, dword [rsp + 0x40]
mov edi, dword [rsp + 0x48]
test cl, cl
je 0x18001a906
mov ecx, dword [rbx + 8]
add ecx, r14d
cmp ecx, r13d
cmovg r13d, ecx
mov ebx, 0x20
jmp 0x18001a91b
mov r11d, dword [rsp + 0x40]
mov ebx, 0x20
mov edi, dword [rsp + 0x48]
movzx ecx, byte [r15]
test cl, cl
jne 0x18001a666
sub edi, dword [rsp + 0x70]
sub r13d, dword [rsp + 0x78]
test byte [rsi + 0x20], 1
cmovne r13d, edi
mov eax, r13d
movss dword [rsi + 0x1c], xmm6
mov rcx, qword [rbp + 0x7c0]
xor rcx, rsp
call fcn.18002d490
movaps xmm6, xmmword [rsp + 0x8d0]
add rsp, 0x8e8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret