Function at 0x180015050
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 [0x180078228]
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 0x1800150c4
bt ebx, 0xa
jae 0x180015f90
mov eax, ebx
btr eax, 0x1f
test ebx, ebx
cmovns eax, ebx
mov dword [rsp + 0x50], eax
shr ebx, 0x1f
test r14, r14
je 0x1800150f5
mov rax, qword [rdx]
xor r8d, r8d
mov edx, 0x59555678
mov rcx, r14
call qword [rax + 0x40]
test rax, rax
jne 0x1800157b6
test dword [rsi + 0x20], 0x400
je 0x180015171
cmp qword [rsi + 0xa60], rdi
je 0x180015171
test bl, bl
jne 0x180015171
mov eax, dword [0x180078d10]
test eax, eax
jns 0x180015153
lea r8, [rsp + 0x70]
lea rdx, str.SoftwareWine
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x1800151f8
mov dword [0x180078d10], 1
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x180078d10]
test eax, eax
jg 0x180015171
mov eax, dword [rsp + 0x50]
bt eax, 0x1e
jb 0x180015171
test dword [rsi + 0x20], 0x1f7
jne 0x180015171
cmp dword [rsi + 0x28], edi
je 0x18001517e
test al, 0x20
jne 0x18001517e
cmp dword [rsi + 0x24], 0x100
jl 0x1800157b6
xor r8d, r8d
mov r13d, r8d
test r15, r15
je 0x1800152b7
movzx edx, byte [r15]
test dl, dl
je 0x1800152b7
lea rcx, [r15 + 1]
nop dword [rax]
cmp dl, 0xc2
jb 0x1800151e7
cmp dl, 0xdf
ja 0x1800151b5
movzx eax, byte [rcx]
cmp al, 0x80
jb 0x1800151ba
cmp al, 0xbf
jbe 0x180015205
cmp dl, 0xef
ja 0x1800151cf
movzx eax, byte [rcx]
sub al, 0x80
cmp al, 0x3f
ja 0x1800151d4
movzx eax, byte [rcx + 1]
cmp al, 0x80
jb 0x1800151d4
cmp al, 0xbf
jbe 0x180015205
cmp dl, 0xf4
ja 0x1800151e7
movzx eax, byte [rcx]
sub al, 0x80
cmp al, 0x3f
ja 0x1800151e7
movzx eax, byte [rcx + 1]
sub al, 0x80
cmp al, 0x3f
jbe 0x180015205
inc rcx
movzx edx, byte [rcx - 1]
test dl, dl
je 0x1800152b7
jmp 0x1800151a0
xor eax, eax
mov dword [0x180078d10], eax
jmp 0x180015155
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 0x18001526e
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 0x1800152b7
lea r13, [rbp - 0x40]
cdqe
mov word [rbp + rax*2 - 0x40], r8w
jmp 0x1800152b7
add eax, 0x20
movsxd rcx, eax
add rcx, rcx
call fcn.180040888
mov r13, rax
test rax, rax
je 0x1800152b4
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 0x1800152ca
mov rcx, r13
call fcn.180040874
xor r8d, r8d
test r14, r14
je 0x1800152d9
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x38]
mov r14, rax
jmp 0x1800152dc
jle 0x1800152b4
cdqe
xor r8d, r8d
mov word [r13 + rax*2], r8w
jmp 0x1800152b7
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 0x18001565d
mov byte [rsp + 0x54], 1
mov rbx, qword [0x180082f18]
test rbx, rbx
jne 0x180015359
lea ecx, [rbx + 0x38]
call fcn.180034570
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.18000ccf0
nop
mov qword [0x180082f18], rbx
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
cmp eax, 4
jl 0x180015379
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 4
jge 0x18001538e
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
mov edx, 4
mov r8d, edx
call qword [rax + 0x30]
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov r14, rax
test rax, rax
je 0x18001579e
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 0x1800153f2
mov r8d, 0xffffffff
mov rdx, r13
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x180015400
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 0x180015434
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 0x18001578c
mov r8, qword [rsp + 0x68]
test r8, r8
je 0x18001578c
mov ecx, dword [rbp - 0x48]
test r9b, 2
je 0x180015612
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 0x180015639
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 0x1800154a7
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 0x1800154cf
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 0x18001551a
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 0x180015516
mov edx, ecx
mov ecx, dword [rsp + 0x50]
cmp edi, eax
jge 0x180015529
sub edi, eax
mov dword [rbp - 0x68], edi
mov edi, eax
mov dword [rsp + 0x58], eax
cmp ebx, edx
jge 0x180015538
sub ebx, edx
mov dword [rbp - 0x64], ebx
mov ebx, edx
mov dword [rsp + 0x5c], edx
cmp r15d, ebx
jle 0x18001578c
cmp r12d, edi
jle 0x18001578c
and ecx, 0xfffffef0
mov dword [rsp + 0x50], ecx
mov eax, r12d
sub eax, edi
mov dword [rsp + 0x48], eax
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp dword [rsp + 0x48], eax
jg 0x180015586
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov ecx, r15d
sub ecx, ebx
cmp ecx, eax
jle 0x1800155d0
mov rdx, qword [rsp + 0x70]
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [0x180082f18]
mov rax, qword [rcx]
mov r8d, r15d
sub r8d, ebx
mov edx, dword [rsp + 0x48]
call qword [rax + 0x30]
mov rcx, qword [0x180082f18]
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 [0x18006fe80]
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 [0x180082f18]
call fcn.18000ce60
mov dword [rbp - 0x60], r12d
mov dword [rbp - 0x5c], r15d
jmp 0x180015695
mov edi, dword [r12]
test r9b, 1
je 0x180015456
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 0x18001545a
mov ebx, dword [rax + 4]
test r9b, 4
je 0x18001547a
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 0x18001547e
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 0x1800156e5
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 0x18001570e
mov r8d, 0xffffffff
mov rdx, r13
call qword [sym.imp.USER32.dll_DrawTextW]
jmp 0x18001571d
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 0x180015771
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 [0x180082f18]
mov rcx, qword [rsp + 0x68]
call fcn.18000ce60
jmp 0x180015787
test dword [rsp + 0x50], 0x400
je 0x180015787
movups xmm0, xmmword [rbp - 0x68]
mov rax, qword [rsp + 0x78]
movups xmmword [rax], xmm0
test r14, r14
je 0x18001579a
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 0x1800157af
mov rcx, r13
call fcn.180040874
mov eax, edi
jmp 0x180015f90
mov r10d, dword [rsp + 0x50]
bt r10d, 0xa
jae 0x180015a9a
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 0x180015a74
lea r9d, [rax + 0x20]
mov ebx, dword [rsp + 0x40]
nop dword [rax]
test ebx, ebx
je 0x180015a74
cmp cl, 0x80
jb 0x1800158b3
cmp cl, 0xc2
jb 0x1800158b3
cmp cl, 0xe0
jae 0x18001583c
movzx r9d, byte [r15 + 1]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x1800158b3
mov edx, 2
and cl, 0x1f
movzx edi, cl
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x1800158bb
cmp cl, 0xf0
jae 0x180015883
movzx r10d, byte [r15 + 1]
lea eax, [r10 - 0x80]
cmp al, 0x40
ja 0x1800158b3
movzx r9d, byte [r15 + 2]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x1800158b3
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 0x1800158bb
cmp cl, 0xf5
jae 0x1800158b3
movzx eax, byte [r15 + 1]
sub al, 0x80
cmp al, 0x40
ja 0x1800158b3
movzx eax, byte [r15 + 2]
sub al, 0x80
cmp al, 0x40
ja 0x1800158b3
movzx eax, byte [r15 + 3]
sub al, 0x80
cmp al, 0x40
ja 0x1800158b3
mov edx, 4
mov edi, r9d
jmp 0x1800158bb
mov edx, 1
movzx edi, cl
mov r8d, edx
add r15, rdx
test ebx, ebx
jle 0x1800158d5
sub ebx, edx
mov ecx, 0
cmovs ebx, ecx
mov dword [rsp + 0x40], ebx
jmp 0x1800158d7
xor ecx, ecx
cmp di, 0xd
je 0x180015a62
cmp di, 0xa
jne 0x1800158f7
mov r10d, dword [rsp + 0x50]
test r10b, 0x20
je 0x18001595d
mov edi, 0x20
movzx edx, di
mov rcx, rsi
call fcn.180013be0
mov rbx, rax
test rax, rax
jne 0x1800159dd
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ebx, edx
shr ebx, 4
movzx edx, di
mov rcx, rsi
call fcn.180013330
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
shr edx, 4
cmp edx, ebx
je 0x180015a59
mov eax, 0x80
cmp di, ax
jae 0x180015988
movzx eax, di
lea rbx, [rax*4 + 0xb]
add rbx, rax
lea rbx, [rsi + rbx*4]
jmp 0x1800159d8
mov eax, dword [rsi + 0x28]
add eax, dword [rsi + 0x24]
test byte [rsi + 0x20], 1
je 0x180015979
add r11d, eax
mov dword [rsp + 0x48], r11d
mov r12d, ecx
jmp 0x180015a62
add r12d, eax
mov r11d, ecx
mov dword [rsp + 0x48], ecx
jmp 0x180015a62
test edx, edx
je 0x180015a59
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 0x1800159b1
mov rax, qword [rsi + 0xa30]
jmp 0x1800159b4
mov rax, rcx
mov r8d, edx
lea rcx, [0x180013030]
mov qword [rsp + 0x20], rcx
mov r9d, 0x14
mov rdx, rax
lea rcx, [rbp - 0x68]
call fcn.1800491e0
mov rbx, rax
test rbx, rbx
je 0x180015a59
mov eax, dword [rbx]
test eax, eax
js 0x180015a59
jne 0x1800159f4
movzx edx, di
mov rcx, rsi
call fcn.180013330
mov eax, dword [rbx]
test eax, eax
mov r11d, dword [rsp + 0x48]
jle 0x180015a5e
test byte [rsi + 0x20], 1
je 0x180015a2d
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 0x180015a62
mov r14d, edx
jmp 0x180015a62
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 0x180015a5e
mov r11d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x40]
movzx ecx, byte [r15]
test cl, cl
mov r9d, 0x20
jne 0x1800157f0
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 0x180015f90
movss xmm6, dword [rsi + 0x1c]
movaps xmm1, xmm6
bt r10d, 0x1e
jae 0x180015acd
movzx eax, byte [rsi + 0xb]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, qword [0x18006fec8]
cvtps2pd xmm0, xmm6
mulsd xmm1, xmm0
cvtpd2ps xmm1, xmm1
movss dword [rsi + 0x1c], xmm1
xorps xmm0, xmm0
ucomiss xmm1, xmm0
jp 0x180015adb
je 0x180015c7b
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 0x180015baa
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.180015050
mov r8d, dword [rbp - 0x78]
mov r10d, dword [rsp + 0x50]
test r10b, 1
je 0x180015b66
mov eax, dword [rbp - 0x70]
sub eax, dword [rbp - 0x60]
sub eax, r8d
cdq
sub eax, edx
sar eax, 1
add r12d, eax
jmp 0x180015b74
test r10b, 2
je 0x180015b74
mov r12d, dword [rbp - 0x70]
sub r12d, dword [rbp - 0x60]
mov ecx, dword [rbp - 0x74]
mov r9d, dword [rbp - 0x5c]
test r10b, 4
je 0x180015b93
mov eax, dword [rbp - 0x6c]
sub eax, r9d
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add r14d, eax
jmp 0x180015ba0
test r10b, 8
je 0x180015ba0
mov r14d, dword [rbp - 0x6c]
sub r14d, r9d
cmp edi, 3
jne 0x180015c02
add r14d, r9d
jmp 0x180015c02
cmp edi, 3
jne 0x180015bfa
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.180015050
add r14d, dword [rbp - 0x5c]
mov r8d, dword [rbp - 0x78]
mov r10d, dword [rsp + 0x50]
jmp 0x180015bff
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 0x180015c82
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 0x180015c50
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 0x180015c6e
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 0x180015c7b
cmp edx, dword [rbp - 0x74]
jg 0x180015ca0
xor eax, eax
jmp 0x180015f8b
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 0x180015f77
mov ebx, 0x20
mov r11d, dword [rsp + 0x40]
test r11d, r11d
je 0x180015f77
cmp cl, 0x80
jb 0x180015d79
cmp cl, 0xc2
jb 0x180015d79
cmp cl, 0xe0
jae 0x180015d03
movzx r9d, byte [r15 + 1]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x180015d79
mov edx, 2
and cl, 0x1f
movzx edi, cl
shl di, 6
and r9b, 0x3f
movzx eax, r9b
or di, ax
jmp 0x180015d81
cmp cl, 0xf0
jae 0x180015d4a
movzx r10d, byte [r15 + 1]
lea eax, [r10 - 0x80]
cmp al, 0x40
ja 0x180015d79
movzx r9d, byte [r15 + 2]
lea eax, [r9 - 0x80]
cmp al, 0x40
ja 0x180015d79
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 0x180015d81
cmp cl, 0xf5
jae 0x180015d79
movzx eax, byte [r15 + 1]
sub al, 0x80
cmp al, 0x40
ja 0x180015d79
movzx eax, byte [r15 + 2]
sub al, 0x80
cmp al, 0x40
ja 0x180015d79
movzx eax, byte [r15 + 3]
sub al, 0x80
cmp al, 0x40
ja 0x180015d79
mov edx, 4
mov edi, ebx
jmp 0x180015d81
mov edx, 1
movzx edi, cl
mov r8d, edx
add r15, rdx
test r11d, r11d
jle 0x180015d9d
sub r11d, edx
mov eax, 0
cmovs r11d, eax
mov dword [rsp + 0x40], r11d
cmp di, 0xd
je 0x180015f67
cmp di, 0xa
jne 0x180015db7
test byte [rsp + 0x50], 0x20
je 0x180015e1f
movzx edi, bx
movzx edx, di
mov rcx, rsi
call fcn.180013be0
mov rbx, rax
test rax, rax
jne 0x180015e9a
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ebx, edx
shr ebx, 4
movzx edx, di
mov rcx, rsi
call fcn.180013330
mov eax, 0xcccccccd
mul dword [rsi + 0xa3c]
mov ecx, edx
shr ecx, 4
cmp ecx, ebx
je 0x180015f5d
mov eax, 0x80
cmp di, ax
jae 0x180015e49
movzx eax, di
lea rbx, [rax*4 + 0xb]
add rbx, rax
lea rbx, [rsi + rbx*4]
jmp 0x180015e91
mov eax, dword [rsi + 0x28]
add eax, dword [rsi + 0x24]
mov edi, dword [rsp + 0x48]
test byte [rsi + 0x20], 1
je 0x180015e3c
add r12d, eax
mov r14d, dword [rsp + 0x78]
jmp 0x180015f6b
add r14d, eax
mov r12d, dword [rsp + 0x70]
jmp 0x180015f6b
test ecx, ecx
je 0x180015f5d
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 0x180015e70
mov rdx, qword [rsi + 0xa30]
mov r8d, ecx
lea rax, [0x180013030]
mov qword [rsp + 0x20], rax
mov r9d, 0x14
lea rcx, [rbp - 0x68]
call fcn.1800491e0
mov rbx, rax
test rbx, rbx
je 0x180015f5d
mov eax, dword [rbx]
test eax, eax
js 0x180015f5d
jne 0x180015eb5
movzx edx, di
mov rcx, rsi
call fcn.180013330
mov eax, dword [rbx]
test eax, eax
jle 0x180015f5d
cmp eax, dword [rsi + 0xa54]
jge 0x180015f5d
cmp dword [rbp - 0x80], 3
jne 0x180015ed1
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 0x180015f38
cmp dword [rbp - 0x80], 3
je 0x180015f09
add r14d, dword [rbx + 0xc]
jmp 0x180015f12
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 0x180015f56
mov ecx, dword [rbx + 4]
add ecx, r12d
mov ebx, 0x20
cmp ecx, edi
jle 0x180015f6b
mov edi, r12d
mov dword [rsp + 0x48], r12d
jmp 0x180015f6b
add r12d, dword [rbx + 0xc]
mov r11d, dword [rsp + 0x40]
mov edi, dword [rsp + 0x48]
test cl, cl
je 0x180015f56
mov ecx, dword [rbx + 8]
add ecx, r14d
cmp ecx, r13d
cmovg r13d, ecx
mov ebx, 0x20
jmp 0x180015f6b
mov r11d, dword [rsp + 0x40]
mov ebx, 0x20
mov edi, dword [rsp + 0x48]
movzx ecx, byte [r15]
test cl, cl
jne 0x180015cb6
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.180034520
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