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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
push rbp
push rsi
push rdi
sub rsp, 0x8e0
mov qword [rsp + 0xc8], 0xfffffffffffffffe
mov qword [rax + 8], rbx
movaps xmmword [rax - 0x28], xmm6
mov esi, r9d
mov rbp, r8
mov rbx, rdx
mov rdi, rcx
xor eax, eax
mov dword [rsp + 0x5c], eax
test rdx, rdx
jne 0x180058ab4
mov eax, dword [rsp + 0x928]
bt eax, 0xa
jb 0x180058abb
xor eax, eax
jmp 0x180059cfc
mov eax, dword [rsp + 0x928]
mov byte [rsp + 0x54], 0
bt eax, 0x1f
jae 0x180058ad6
mov byte [rsp + 0x54], 1
btr eax, 0x1f
mov dword [rsp + 0x928], eax
test rdx, rdx
je 0x180058af5
mov rax, qword [rdx]
xor r8d, r8d
mov edx, 0x59555678
mov rcx, rbx
call qword [rax + 0x40]
test rax, rax
jne 0x1800594ad
bt dword [rdi + 0x20], 0xa
jae 0x180058b94
cmp qword [rdi + 0xc60], 0
je 0x180058b94
cmp byte [rsp + 0x54], 0
jne 0x180058b94
mov eax, dword [0x180085d18]
test eax, eax
jns 0x180058b69
lea r8, [rsp + 0xb8]
lea rdx, str.SoftwareWine
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x180058b5f
mov dword [0x180085d18], 1
mov rcx, qword [rsp + 0xb8]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x180085d18]
jmp 0x180058b69
xor eax, eax
mov dword [0x180085d18], eax
jmp 0x180058b6d
test eax, eax
jg 0x180058b94
mov eax, dword [rsp + 0x928]
bt eax, 0x1e
jb 0x180058b94
mov ecx, dword [rdi + 0x20]
test cl, 4
jne 0x180058b94
test ecx, 0x1f3
jne 0x180058b94
cmp dword [rdi + 0x28], 0
je 0x180058ba1
test al, 0x20
jne 0x180058ba1
cmp dword [rdi + 0x24], 0x100
jl 0x1800594ad
xor r8d, r8d
mov qword [rsp + 0xa0], r8
mov rcx, rbp
call fcn.180055ad0
test eax, eax
je 0x180058cbc
mov dword [rsp + 0x28], r8d
mov qword [rsp + 0x20], r8
mov r9d, esi
mov r8, rbp
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [rsp + 0x98], eax
cmp eax, 0x3e8
jge 0x180058c3e
mov dword [rsp + 0x28], 0x400
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, rbp
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movsxd r11, eax
test eax, eax
je 0x180058caf
lea rax, [rsp + 0xd0]
mov qword [rsp + 0xa0], rax
xor r8d, r8d
mov word [rsp + r11*2 + 0xd0], r8w
jmp 0x180058cbc
add eax, 0x20
movsxd rcx, eax
add rcx, rcx
call fcn.180024b00
mov qword [rsp + 0xa0], rax
test rax, rax
je 0x180058cb4
mov ecx, dword [rsp + 0x98]
inc ecx
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, rbp
mov edx, 8
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x180058c97
mov rcx, qword [rsp + 0xa0]
call fcn.180024ac0
xor r8d, r8d
jmp 0x180058cbc
test eax, eax
jle 0x180058cb9
cdqe
mov rcx, qword [rsp + 0xa0]
xor r8d, r8d
mov word [rcx + rax*2], r8w
jmp 0x180058cbc
xor r8d, r8d
jmp 0x180058cbc
xor r8d, r8d
jmp 0x180058cbc
xor r8d, r8d
test rbx, rbx
je 0x180058cd2
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x38]
mov rbp, rax
xor r8d, r8d
jmp 0x180058cd5
mov rbp, r8
mov dword [rsp + 0xa8], r8d
xor eax, eax
mov dword [rsp + 0xac], eax
mov dword [rsp + 0xb0], eax
mov dword [rsp + 0xb4], eax
mov byte [rsp + 0x54], al
mov dword [rsp + 0x60], r8d
mov dword [rsp + 0x64], eax
mov dword [rsp + 0x68], eax
mov dword [rsp + 0x6c], eax
mov qword [rsp + 0xc0], r8
mov dword [rsp + 0x58], r8d
mov qword [rsp + 0x98], rax
mov dword [rsp + 0x70], eax
mov dword [rsp + 0x74], eax
mov byte [rsp + 0x50], al
test rbp, rbp
jne 0x180059231
test rbx, rbx
je 0x180058e10
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
xor r8d, r8d
mov edx, 0x51b7000
call qword [rax + 0x40]
cmp rax, 0x1000
jne 0x180058e08
nop
mov edx, dword [rsp + 0x58]
add edx, dword [rbx + 0x10]
mov dword [rsp + 0x58], edx
mov rax, qword [rsp + 0x98]
add eax, dword [rbx + 0x14]
mov qword [rsp + 0x98], rax
mov rbx, qword [rbx + 0x18]
test rbx, rbx
je 0x180058dfe
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x38]
mov rbp, rax
test rax, rax
jne 0x180058dbb
mov rax, qword [rbx]
xor r8d, r8d
mov edx, 0x51b7000
mov rcx, rbx
call qword [rax + 0x40]
cmp rax, 0x1000
je 0x180058d60
mov rbx, qword [rsp + 0x908]
jmp 0x180058df3
mov rcx, qword [rsp + 0x908]
mov eax, dword [rcx + 8]
mov edx, dword [rsp + 0x58]
add eax, edx
mov dword [rsp + 0x70], eax
mov eax, dword [rcx + 0xc]
mov rcx, qword [rsp + 0x98]
add eax, ecx
mov dword [rsp + 0x74], eax
mov eax, dword [rsp + 0x928]
shr eax, 0xa
not al
and al, 1
mov dword [rsp + 0x50], eax
test rbp, rbp
jne 0x180059231
jmp 0x180058e10
mov rbx, qword [rsp + 0x908]
jmp 0x180058e10
mov rbx, qword [rsp + 0x908]
mov byte [rsp + 0x54], 1
mov rcx, qword [0x1800870c8]
test rcx, rcx
jne 0x180058e56
mov ecx, 0x38
call fcn.1800263e4
mov qword [rsp + 0x908], rax
test rax, rax
je 0x180058e4a
xor r8d, r8d
xor edx, edx
mov rcx, rax
call fcn.1800429a0
mov rcx, rax
jmp 0x180058e4f
xor eax, eax
mov rcx, rax
mov qword [0x1800870c8], rcx
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp eax, 4
jl 0x180058e73
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 4
jge 0x180058e88
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
mov edx, 4
mov r8d, edx
call qword [rax + 0x30]
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov rbp, rax
test rax, rax
je 0x180059487
mov rdx, qword [rdi + 0xc60]
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0xb8], rax
xor eax, eax
mov dword [rsp + 0x88], eax
mov dword [rsp + 0x8c], eax
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0xa0]
test rax, rax
je 0x180058f17
mov ecx, dword [rsp + 0x928]
and ecx, 0xfffffff0
mov dword [rsp + 0x908], ecx
or ecx, 0xc00
mov dword [rsp + 0x20], ecx
lea r9, [rsp + 0x88]
or r8d, 0xffffffff
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.USER32.dll_DrawTextW]
mov dword [rsp + 0x5c], eax
jmp 0x180058f51
mov eax, dword [rsp + 0x928]
and eax, 0xfffffff0
mov dword [rsp + 0x908], eax
or eax, 0xc00
mov dword [rsp + 0x20], eax
lea r9, [rsp + 0x88]
mov r8d, esi
mov rdx, qword [rsp + 0x910]
mov rcx, rbp
call qword [sym.imp.USER32.dll_DrawTextA]
mov dword [rsp + 0x5c], eax
mov r8d, dword [rsp + 0x928]
bt r8d, 0xa
jae 0x180058f94
mov rcx, qword [rsp + 0x920]
mov eax, dword [rcx]
sub eax, dword [rsp + 0x88]
add eax, dword [rsp + 0x90]
mov dword [rcx + 8], eax
mov eax, dword [rcx + 4]
sub eax, dword [rsp + 0x8c]
add eax, dword [rsp + 0x94]
mov dword [rcx + 0xc], eax
jmp 0x180059471
test rbx, rbx
je 0x180059471
mov r9d, dword [rsp + 0x90]
test r8b, 2
je 0x180058fbf
mov rcx, qword [rsp + 0x920]
mov eax, dword [rcx + 8]
sub eax, r9d
mov dword [rsp + 0x60], eax
jmp 0x180058fee
test r8b, 1
je 0x180058fe0
mov rcx, qword [rsp + 0x920]
mov eax, dword [rcx + 8]
sub eax, r9d
add eax, dword [rcx]
cdq
sub eax, edx
sar eax, 1
mov dword [rsp + 0x60], eax
jmp 0x180058fee
mov rcx, qword [rsp + 0x920]
mov eax, dword [rcx]
mov dword [rsp + 0x60], eax
add eax, r9d
mov dword [rsp + 0x68], eax
mov r9d, dword [rsp + 0x94]
test r8b, 8
je 0x18005900f
mov eax, dword [rcx + 0xc]
sub eax, r9d
mov dword [rsp + 0x64], eax
jmp 0x180059030
test r8b, 4
je 0x180059029
mov eax, dword [rcx + 0xc]
add eax, dword [rcx + 4]
sub eax, r9d
cdq
sub eax, edx
sar eax, 1
mov dword [rsp + 0x64], eax
jmp 0x180059030
mov eax, dword [rcx + 4]
mov dword [rsp + 0x64], eax
add eax, r9d
mov dword [rsp + 0x6c], eax
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
cmp dword [rsp + 0x68], eax
jle 0x180059053
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
mov dword [rsp + 0x68], eax
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov r8d, dword [rsp + 0x6c]
cmp r8d, eax
jle 0x180059076
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov r8d, eax
mov dword [rsp + 0x6c], eax
xor edx, edx
mov r9d, edx
mov r10d, edx
bt dword [rsp + 0x928], 8
jb 0x1800590c9
mov rdx, qword [rsp + 0x920]
mov ecx, dword [rdx + 8]
mov r11d, dword [rsp + 0x68]
cmp r11d, ecx
cmovg r11d, ecx
mov dword [rsp + 0x68], r11d
mov eax, dword [rdx + 0xc]
cmp r8d, eax
cmovg r8d, eax
mov dword [rsp + 0x6c], r8d
mov eax, dword [rdx]
test eax, eax
cmovg r9d, eax
mov eax, dword [rdx + 4]
test eax, eax
cmovg r10d, eax
xor edx, edx
jmp 0x1800590ce
mov r11d, dword [rsp + 0x68]
mov ecx, dword [rsp + 0x60]
cmp ecx, r9d
jge 0x1800590e8
sub ecx, r9d
mov dword [rsp + 0xa8], ecx
mov ecx, r9d
mov dword [rsp + 0x60], ecx
mov eax, dword [rsp + 0x64]
cmp eax, r10d
jge 0x180059102
sub eax, r10d
mov dword [rsp + 0xac], eax
mov eax, r10d
mov dword [rsp + 0x64], eax
cmp r8d, eax
jle 0x180059471
cmp r11d, ecx
jle 0x180059471
mov eax, dword [rsp + 0x908]
mov dword [rsp + 0x928], eax
mov eax, dword [rdi + 0x24]
cmp eax, 0x10
jl 0x180059135
cdq
and edx, 0xf
add eax, edx
sar eax, 4
jmp 0x180059137
mov eax, edx
add eax, 2
cmp eax, ecx
cmovg eax, ecx
mov dword [rsp + 0x908], eax
sub ecx, eax
mov dword [rsp + 0x60], ecx
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov ecx, dword [rsp + 0x68]
sub ecx, dword [rsp + 0x60]
cmp ecx, eax
jg 0x18005917e
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov ecx, dword [rsp + 0x6c]
sub ecx, dword [rsp + 0x64]
cmp ecx, eax
jle 0x1800591d6
mov rdx, qword [rsp + 0xb8]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
mov r8d, dword [rsp + 0x6c]
sub r8d, dword [rsp + 0x64]
mov edx, dword [rsp + 0x68]
sub edx, dword [rsp + 0x60]
call qword [rax + 0x30]
mov rcx, qword [0x1800870c8]
mov rax, qword [rcx]
call qword [rax + 0x38]
mov rbp, rax
mov rdx, qword [rdi + 0xc60]
mov rcx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0xb8], rax
xor eax, eax
mov dword [rsp + 0x30], eax
movss xmm0, dword [0x180070778]
movss dword [rsp + 0x28], xmm0
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov rdx, rbx
mov rcx, qword [0x1800870c8]
call fcn.180042aa0
mov r11d, dword [rsp + 0x908]
add dword [rsp + 0xa8], r11d
mov eax, dword [rsp + 0x68]
mov dword [rsp + 0xb0], eax
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0xb4], eax
jmp 0x18005926f
mov rdx, qword [rdi + 0xc60]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0xb8], rax
lea rcx, [rsp + 0xa8]
mov rdx, qword [rsp + 0x920]
mov eax, dword [rdx]
mov dword [rcx], eax
mov eax, dword [rdx + 4]
mov dword [rcx + 4], eax
mov eax, dword [rdx + 8]
mov dword [rcx + 8], eax
mov eax, dword [rdx + 0xc]
mov dword [rcx + 0xc], eax
movzx edx, byte [rdi + 9]
shl edx, 8
movzx eax, byte [rdi + 8]
shl eax, 0x10
or edx, eax
movzx eax, byte [rdi + 0xa]
or edx, eax
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SetTextColor]
mov edx, dword [rdi + 0x14]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SetBkMode]
cmp dword [rdi + 0x14], 2
jne 0x1800592bf
movzx edx, byte [rdi + 0xd]
shl edx, 8
movzx eax, byte [rdi + 0xc]
shl eax, 0x10
or edx, eax
movzx eax, byte [rdi + 0xe]
or edx, eax
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SetBkColor]
cmp byte [rsp + 0x50], 0
je 0x180059354
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.GDI32.dll_CreateRectRgn]
mov qword [rsp + 0xc0], rax
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.GDI32.dll_GetClipRgn]
test eax, eax
jne 0x18005930a
mov rcx, qword [rsp + 0xc0]
call qword [sym.imp.GDI32.dll_DeleteObject]
xor eax, eax
mov qword [rsp + 0xc0], rax
mov eax, dword [rsp + 0x74]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x70]
mov r8d, dword [rsp + 0x98]
mov edx, dword [rsp + 0x58]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_IntersectClipRect]
mov ecx, dword [rsp + 0x58]
add dword [rsp + 0xa8], ecx
mov rax, qword [rsp + 0x98]
add dword [rsp + 0xac], eax
add dword [rsp + 0xb0], ecx
add dword [rsp + 0xb4], eax
mov rcx, qword [rsp + 0xa0]
test rcx, rcx
je 0x180059390
mov esi, dword [rsp + 0x928]
mov eax, esi
bts eax, 0xb
mov dword [rsp + 0x20], eax
lea r9, [rsp + 0xa8]
or r8d, 0xffffffff
mov rdx, rcx
mov rcx, rbp
call qword [sym.imp.USER32.dll_DrawTextW]
mov dword [rsp + 0x5c], eax
jmp 0x1800593c6
mov eax, dword [rsp + 0x928]
bts eax, 0xb
mov dword [rsp + 0x20], eax
lea r9, [rsp + 0xa8]
mov r8d, esi
mov rdx, qword [rsp + 0x910]
mov rcx, rbp
call qword [sym.imp.USER32.dll_DrawTextA]
mov dword [rsp + 0x5c], eax
mov esi, dword [rsp + 0x928]
cmp byte [rsp + 0x50], 0
je 0x1800593f4
mov rdx, qword [rsp + 0xc0]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectClipRgn]
mov rax, qword [rsp + 0xc0]
test rax, rax
je 0x1800593f4
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
cmp byte [rsp + 0x54], 0
je 0x180059445
mov ecx, dword [rsp + 0x6c]
mov r9d, dword [rsp + 0x64]
sub ecx, r9d
mov eax, dword [rsp + 0x68]
mov r8d, dword [rsp + 0x60]
sub eax, r8d
xor edx, edx
mov dword [rsp + 0x48], edx
movss xmm0, dword [rdi + 0x1c]
movss dword [rsp + 0x40], xmm0
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], edx
mov dword [rsp + 0x20], edx
mov rdx, qword [0x1800870c8]
mov rcx, rbx
call fcn.180043550
jmp 0x180059471
bt esi, 0xa
jae 0x180059471
lea rdx, [rsp + 0xa8]
mov eax, dword [rdx]
mov rcx, qword [rsp + 0x920]
mov dword [rcx], eax
mov eax, dword [rdx + 4]
mov dword [rcx + 4], eax
mov eax, dword [rdx + 8]
mov dword [rcx + 8], eax
mov eax, dword [rdx + 0xc]
mov dword [rcx + 0xc], eax
test rbp, rbp
je 0x180059487
mov rdx, qword [rsp + 0xb8]
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
lea rcx, [rsp + 0xd0]
mov rax, qword [rsp + 0xa0]
cmp rax, rcx
je 0x1800594a4
mov rcx, rax
call fcn.180024ac0
mov eax, dword [rsp + 0x5c]
jmp 0x180059cfc
mov r8d, dword [rsp + 0x928]
bt r8d, 0xa
jae 0x18005977f
xor eax, eax
mov r11d, eax
mov dword [rsp + 0x58], eax
mov r10d, eax
mov dword [rsp + 0x5c], eax
mov r9d, eax
mov dword [rsp + 0x54], eax
mov dword [rsp + 0x50], eax
cmp byte [rbp], al
je 0x180059754
lea ebx, [rax + 0x20]
test esi, esi
je 0x180059754
mov word [rsp + 0x908], bx
lea rdx, [rsp + 0x908]
mov rcx, rbp
call fcn.1800559b0
movsxd rcx, eax
add rbp, rcx
mov qword [rsp + 0x910], rbp
test esi, esi
jle 0x180059525
sub esi, eax
mov ecx, 0
cmovs esi, ecx
jmp 0x180059527
xor ecx, ecx
mov bp, word [rsp + 0x908]
cmp bp, 0xd
je 0x1800596e4
cmp bp, 0xa
jne 0x18005959d
mov r8d, dword [rsp + 0x928]
test r8b, 0x20
je 0x180059551
mov ebp, ebx
jmp 0x18005959d
test byte [rdi + 0x20], 1
je 0x18005957a
mov eax, dword [rdi + 0x28]
add eax, dword [rdi + 0x24]
add r11d, eax
mov dword [rsp + 0x58], r11d
mov r10d, ecx
mov dword [rsp + 0x5c], ecx
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
jmp 0x180059742
mov eax, dword [rdi + 0x28]
add eax, dword [rdi + 0x24]
add r10d, eax
mov dword [rsp + 0x5c], r10d
mov r11d, ecx
mov dword [rsp + 0x58], ecx
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
jmp 0x180059742
movzx edx, bp
mov rcx, rdi
call fcn.180057770
mov rbx, rax
test rax, rax
jne 0x1800595fa
mov ebx, dword [rdi + 0xc3c]
movzx edx, bp
mov rcx, rdi
call fcn.1800580b0
mov eax, 0xaaaaaaab
mul ebx
mov ecx, edx
shr ecx, 4
mov eax, 0xaaaaaaab
mul dword [rdi + 0xc3c]
shr edx, 4
cmp edx, ecx
je 0x1800596ca
movzx edx, bp
mov rcx, rdi
call fcn.180057770
mov rbx, rax
test rax, rax
je 0x180059709
mov eax, dword [rbx]
test eax, eax
js 0x1800596ef
test eax, eax
jne 0x180059613
movzx edx, bp
mov rcx, rdi
call fcn.1800580b0
cmp dword [rbx], 0
jle 0x180059723
test byte [rdi + 0x20], 1
je 0x18005967c
mov edx, dword [rbx + 8]
sub edx, dword [rbx + 0x14]
mov r10d, dword [rsp + 0x5c]
add edx, r10d
add r10d, dword [rbx + 0xc]
mov dword [rsp + 0x5c], r10d
mov ecx, dword [rbx + 4]
mov r11d, dword [rsp + 0x58]
add ecx, r11d
mov r9d, dword [rsp + 0x54]
cmp ecx, r9d
cmovg r9d, ecx
mov dword [rsp + 0x54], r9d
mov eax, dword [rsp + 0x50]
cmp r10d, eax
cmovg eax, r10d
mov dword [rsp + 0x50], eax
cmp edx, eax
jle 0x18005973d
mov eax, edx
mov dword [rsp + 0x50], edx
mov ebx, 0x20
jmp 0x180059742
mov edx, dword [rbx + 4]
sub edx, dword [rbx + 0x14]
mov r11d, dword [rsp + 0x58]
add edx, r11d
add r11d, dword [rbx + 0xc]
mov dword [rsp + 0x58], r11d
mov ecx, dword [rbx + 8]
mov r10d, dword [rsp + 0x5c]
add ecx, r10d
mov eax, dword [rsp + 0x50]
cmp ecx, eax
cmovg eax, ecx
mov dword [rsp + 0x50], eax
mov r9d, dword [rsp + 0x54]
cmp r11d, r9d
cmovg r9d, r11d
cmp edx, r9d
cmovg r9d, edx
mov dword [rsp + 0x54], r9d
mov ebx, 0x20
jmp 0x180059742
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
mov r10d, dword [rsp + 0x5c]
mov r11d, dword [rsp + 0x58]
mov ebx, 0x20
jmp 0x180059742
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
jmp 0x180059742
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
mov r10d, dword [rsp + 0x5c]
mov r11d, dword [rsp + 0x58]
mov ebx, 0x20
jmp 0x180059742
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
mov r10d, dword [rsp + 0x5c]
mov r11d, dword [rsp + 0x58]
mov ebx, 0x20
jmp 0x180059742
mov eax, dword [rsp + 0x50]
mov r9d, dword [rsp + 0x54]
mov r10d, dword [rsp + 0x5c]
mov r11d, dword [rsp + 0x58]
mov ebx, 0x20
jmp 0x180059742
mov ebx, 0x20
mov rbp, qword [rsp + 0x910]
cmp byte [rbp], 0
jne 0x1800594e7
mov r8, qword [rsp + 0x920]
mov ecx, dword [r8]
lea edx, [r9 + rcx]
mov dword [r8 + 8], edx
mov ecx, dword [r8 + 4]
lea edx, [rax + rcx]
mov dword [r8 + 0xc], edx
test byte [rdi + 0x20], 1
cmovne eax, r9d
jmp 0x180059cfc
movss xmm6, dword [rdi + 0x1c]
bt r8d, 0x1e
jae 0x1800597b2
movzx eax, byte [rdi + 0xb]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
unpcklps xmm6, xmm6
cvtps2pd xmm0, xmm6
mulsd xmm1, xmm0
mulsd xmm1, qword [0x1800733f0]
cvtsd2ss xmm0, xmm1
movss dword [rdi + 0x1c], xmm0
xorps xmm0, xmm0
ucomiss xmm0, dword [rdi + 0x1c]
jne 0x1800597c7
movss dword [rdi + 0x1c], xmm6
xor eax, eax
jmp 0x180059cfc
lea rdx, [rsp + 0x78]
mov rcx, qword [rsp + 0x920]
mov eax, dword [rcx]
mov dword [rdx], eax
mov eax, dword [rcx + 4]
mov dword [rdx + 4], eax
mov eax, dword [rcx + 8]
mov dword [rdx + 8], eax
mov eax, dword [rcx + 0xc]
mov dword [rdx + 0xc], eax
mov r9d, dword [rsp + 0x78]
mov ebx, r9d
mov dword [rsp + 0x50], ebx
mov rbp, qword [rsp + 0x78]
shr rbp, 0x20
xor cl, cl
movzx eax, byte [rdi + 0x20]
and al, 3
movzx ecx, cl
cmp al, 3
mov eax, 1
cmove ecx, eax
mov dword [rsp + 0x5c], ecx
test r8b, 0xf
je 0x180059917
xor eax, eax
mov dword [rsp + 0x88], eax
mov dword [rsp + 0x8c], eax
mov dword [rsp + 0x90], eax
mov dword [rsp + 0x94], eax
neg byte [rsp + 0x54]
sbb ecx, ecx
and ecx, 0x80000000
mov eax, r8d
and eax, 0x20
or ecx, eax
bts ecx, 0xa
mov dword [rsp + 0x28], ecx
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, qword [rsp + 0x910]
mov rdx, qword [rsp + 0x908]
mov rcx, rdi
call fcn.180058a60
mov r9d, dword [rsp + 0x78]
mov r8d, dword [rsp + 0x928]
test r8b, 1
je 0x1800598b5
mov eax, dword [rsp + 0x80]
sub eax, dword [rsp + 0x90]
sub eax, r9d
cdq
sub eax, edx
sar eax, 1
add ebx, eax
mov dword [rsp + 0x50], ebx
jmp 0x1800598cd
test r8b, 2
je 0x1800598cd
mov ebx, dword [rsp + 0x80]
sub ebx, dword [rsp + 0x90]
mov dword [rsp + 0x50], ebx
mov ecx, dword [rsp + 0x7c]
mov r10d, dword [rsp + 0x94]
test r8b, 4
je 0x1800598f4
mov eax, dword [rsp + 0x84]
sub eax, r10d
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add ebp, eax
jmp 0x180059904
test r8b, 8
je 0x180059904
mov ebp, dword [rsp + 0x84]
sub ebp, r10d
cmp byte [rsp + 0x5c], 0
je 0x18005999b
add ebp, r10d
jmp 0x18005999b
test cl, cl
je 0x180059997
xor eax, eax
mov dword [rsp + 0x88], eax
mov dword [rsp + 0x8c], eax
mov dword [rsp + 0x90], eax
mov dword [rsp + 0x94], eax
neg byte [rsp + 0x54]
sbb ecx, ecx
and ecx, 0x80000000
mov eax, r8d
and eax, 0x20
or ecx, eax
bts ecx, 0xa
mov dword [rsp + 0x28], ecx
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, qword [rsp + 0x910]
mov rdx, qword [rsp + 0x908]
mov rcx, rdi
call fcn.180058a60
add ebp, dword [rsp + 0x94]
mov ecx, dword [rsp + 0x7c]
mov r9d, dword [rsp + 0x78]
mov r8d, dword [rsp + 0x928]
jmp 0x18005999b
mov ecx, dword [rsp + 0x7c]
mov dword [rsp + 0x98], ebp
mov dword [rsp + 0xa0], ebx
mov dword [rsp + 0x74], ebp
mov dword [rsp + 0x70], ebx
bt r8d, 8
jb 0x180059a51
test r9d, r9d
mov eax, 0
cmovs r9d, eax
mov dword [rsp + 0x78], r9d
test ecx, ecx
cmovs ecx, eax
mov dword [rsp + 0x7c], ecx
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp dword [rsp + 0x80], eax
jle 0x180059a02
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov dword [rsp + 0x80], eax
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov edx, dword [rsp + 0x84]
cmp edx, eax
jle 0x180059a32
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov edx, eax
mov dword [rsp + 0x84], eax
mov ecx, dword [rsp + 0x78]
cmp dword [rsp + 0x80], ecx
jle 0x180059a45
cmp edx, dword [rsp + 0x7c]
jg 0x180059a85
movss dword [rdi + 0x1c], xmm6
xor eax, eax
jmp 0x180059cfc
xor eax, eax
mov dword [rsp + 0x7c], eax
mov dword [rsp + 0x78], eax
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x10]
mov dword [rsp + 0x80], eax
mov rcx, qword [rsp + 0x908]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov dword [rsp + 0x84], eax
mov rax, qword [rsp + 0x910]
cmp byte [rax], 0
je 0x180059cd9
mov r10d, 0x20
nop dword [rax]
test esi, esi
je 0x180059cd9
mov word [rsp + 0x54], r10w
lea rdx, [rsp + 0x54]
mov rcx, rax
call fcn.1800559b0
movsxd rcx, eax
add qword [rsp + 0x910], rcx
test esi, esi
jle 0x180059ad4
sub esi, eax
mov eax, 0
cmovs esi, eax
mov ax, word [rsp + 0x54]
mov dword [rsp + 0x58], eax
cmp ax, 0xd
je 0x180059cc8
cmp ax, 0xa
jne 0x180059b36
test byte [rsp + 0x928], 0x20
je 0x180059b00
mov eax, r10d
mov dword [rsp + 0x58], eax
jmp 0x180059b36
test byte [rdi + 0x20], 1
je 0x180059b1e
mov eax, dword [rdi + 0x28]
add eax, dword [rdi + 0x24]
add ebx, eax
mov dword [rsp + 0x50], ebx
mov ebp, dword [rsp + 0x98]
jmp 0x180059cc8
mov eax, dword [rdi + 0x28]
add eax, dword [rdi + 0x24]
add ebp, eax
mov ebx, dword [rsp + 0xa0]
mov dword [rsp + 0x50], ebx
jmp 0x180059cc8
movzx edx, ax
mov rcx, rdi
call fcn.180057770
mov rbx, rax
test rax, rax
jne 0x180059b97
mov ebx, dword [rdi + 0xc3c]
movzx edx, word [rsp + 0x58]
mov rcx, rdi
call fcn.1800580b0
mov eax, 0xaaaaaaab
mul ebx
mov ecx, edx
shr ecx, 4
mov eax, 0xaaaaaaab
mul dword [rdi + 0xc3c]
shr edx, 4
cmp edx, ecx
je 0x180059c7c
movzx edx, word [rsp + 0x58]
mov rcx, rdi
call fcn.180057770
mov rbx, rax
test rax, rax
je 0x180059c94
mov eax, dword [rbx]
test eax, eax
js 0x180059c88
test eax, eax
jne 0x180059bb2
movzx edx, word [rsp + 0x58]
mov rcx, rdi
call fcn.1800580b0
mov eax, dword [rbx]
test eax, eax
jle 0x180059cac
cmp eax, dword [rdi + 0xc54]
jge 0x180059ca0
cmp byte [rsp + 0x5c], 0
je 0x180059bd2
sub ebp, dword [rbx + 8]
mov rax, qword [rdi]
lea rcx, [rsp + 0x78]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], ebp
mov r9d, dword [rsp + 0x50]
movzx r8d, word [rsp + 0x58]
mov rdx, qword [rsp + 0x908]
mov rcx, rdi
call qword [rax + 0x58]
movzx r11d, al
test byte [rdi + 0x20], 1
je 0x180059c42
cmp byte [rsp + 0x5c], 0
jne 0x180059c12
add ebp, dword [rbx + 0xc]
jmp 0x180059c1a
mov eax, dword [rbx + 8]
sub eax, dword [rbx + 0xc]
add ebp, eax
test r11b, r11b
je 0x180059c70
mov eax, dword [rbx + 4]
mov ebx, dword [rsp + 0x50]
lea ecx, [rbx + rax]
cmp ecx, dword [rsp + 0x70]
jle 0x180059cc2
mov dword [rsp + 0x70], ebx
mov r10d, 0x20
jmp 0x180059cc8
mov eax, dword [rsp + 0x50]
add eax, dword [rbx + 0xc]
mov dword [rsp + 0x50], eax
test r11b, r11b
je 0x180059cb8
mov ecx, dword [rbx + 8]
add ecx, ebp
mov eax, dword [rsp + 0x74]
cmp ecx, eax
cmovg eax, ecx
mov dword [rsp + 0x74], eax
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, dword [rsp + 0x50]
mov r10d, 0x20
jmp 0x180059cc8
mov ebx, eax
mov r10d, 0x20
jmp 0x180059cc8
mov r10d, 0x20
mov rax, qword [rsp + 0x910]
cmp byte [rax], 0
jne 0x180059aa0
movss dword [rdi + 0x1c], xmm6
test byte [rdi + 0x20], 1
je 0x180059cf1
mov eax, dword [rsp + 0x70]
sub eax, dword [rsp + 0xa0]
jmp 0x180059cfc
mov eax, dword [rsp + 0x74]
sub eax, dword [rsp + 0x98]
mov rbx, qword [rsp + 0x900]
movaps xmm6, xmmword [rsp + 0x8d0]
add rsp, 0x8e0
pop rdi
pop rsi
pop rbp
ret