Function at 0x140005460
Capabilities:
Check os version

Disassembly:
mov r11, rsp
push rbx
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x478
mov rax, qword [0x140018160]
xor rax, rsp
mov qword [rsp + 0x460], rax
mov rax, qword [r9]
xor edi, edi
mov r13, rcx
mov dword [rsp + 0xe0], edi
lea rcx, [r11 - 0x348]
mov rbx, rdx
mov qword [rcx], rax
mov rax, qword [r9 + 8]
mov r15d, edi
mov qword [rcx + 8], rax
mov rax, qword [r9 + 0x10]
mov dword [rsp + 0x9c], edi
mov qword [rcx + 0x10], rax
mov rax, qword [r9 + 0x18]
mov dword [rsp + 0xa0], 2
mov qword [rcx + 0x18], rax
mov rax, qword [r9 + 0x20]
mov qword [rcx + 0x20], rax
xor eax, eax
cmp dword [rdx + 0x558], 2
mov qword [r11 - 0x3c0], rax
mov qword [r11 - 0x3b8], rax
mov qword [r11 - 0x3b0], rax
mov qword [r11 - 0x3a8], rax
mov qword [r11 - 0x3a0], rax
mov qword [r11 - 0x398], rax
mov qword [r11 - 0x390], rax
jne 0x140005518
mov dword [rdx + 0x57c], edi
lea rsi, [rdx + 0x418]
xor edx, edx
lea rcx, [rsp + 0x1d0]
lea r8d, [rdx + 0x5c]
call fcn.140006bd0
mov edx, 0x5a
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, dword [rbx + 0x560]
mov r8d, 0x48
mov edx, eax
call qword [sym.imp.KERNEL32.dll_MulDiv]
mov ecx, 0x2bc
lea rdx, [rbx + 0x518]
neg eax
cmp dword [rbx + 0x56c], edi
mov dword [rsp + 0x1d4], edi
mov dword [rsp + 0x1d0], eax
mov eax, dword [rbx + 0x564]
mov byte [rsp + 0x1e5], dil
mov dword [rsp + 0x1d8], eax
mov dword [rsp + 0x1dc], eax
mov eax, 0x190
cmovne eax, ecx
cmp dword [rbx + 0x570], edi
mov byte [rsp + 0x1e6], dil
mov dword [rsp + 0x1e0], eax
movzx eax, byte [rbx + 0x558]
setne byte [rsp + 0x1e4]
mov byte [rsp + 0x1e7], al
mov eax, dword [rbx + 0x55c]
mov byte [rsp + 0x1e9], dil
neg eax
mov byte [rsp + 0x1ea], dil
mov byte [rsp + 0x1eb], dil
sbb cl, cl
and cl, 7
mov byte [rsp + 0x1e8], cl
lea rcx, [rsp + 0x1ec]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rcx, [rsp + 0x1d0]
call qword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov r14, rax
mov qword [rsp + 0x90], rax
test rax, rax
jne 0x14000562e
lea rcx, str.__YIKES__Cannot_create_watermark_font_n
call fcn.140006efc
jmp 0x1400062e2
mov rdx, rax
mov rcx, r13
mov qword [rsp + 0x4c0], rbp
mov qword [rsp + 0x470], r12
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetFontLanguageInfo]
mov rcx, r13
mov r12d, eax
cmp eax, 0x8000
cmove r12d, edi
call qword [sym.imp.GDI32.dll_GetTextAlign]
mov rcx, r13
and eax, 0xfffffff9
or eax, 0x18
mov edx, eax
call qword [sym.imp.GDI32.dll_SetTextAlign]
mov rcx, rsi
mov byte [rbx + 0x56b], dil
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, 1
mov dword [rsp + 0x98], eax
cmp dword [rbx + 0x55c], edi
je 0x14000583b
mov r14d, r12d
and r14d, 0x132
je 0x140005833
mov rcx, rsi
mov dword [rsp + 0xe0], 0x40
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov rdx, rbp
inc eax
movsxd rcx, eax
add rcx, rcx
call fcn.140006eb8
mov qword [rsp + 0xe8], rax
test rax, rax
je 0x140005829
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov rdx, rbp
inc eax
movsxd rcx, eax
add rcx, rcx
call fcn.140006eb8
mov qword [rsp + 0x110], rax
test rax, rax
jne 0x14000572e
mov rcx, qword [rsp + 0xe8]
call fcn.1400067cc
mov r14, qword [rsp + 0x90]
mov qword [rsp + 0xe8], rdi
jmp 0x14000583b
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov rcx, rsi
mov dword [rsp + 0x118], eax
call qword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
jle 0x14000575f
nop dword [rax + rax]
mov rcx, rsi
inc edi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
cmp edi, eax
jl 0x140005750
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
xor r9d, r9d
mov rdx, rsi
mov r8d, eax
lea rax, [rsp + 0xe0]
mov rcx, r13
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], rax
call qword [sym.imp.GDI32.dll_GetCharacterPlacementW]
test eax, eax
je 0x1400057dd
mov eax, dword [rsp + 0x118]
mov dword [rsp + 0xa0], 0x82
mov dword [rsp + 0x98], eax
test r12b, 2
je 0x140005813
xor r12d, r12d
mov rcx, rsi
mov edi, r12d
call qword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
jle 0x14000581f
mov rcx, rsi
inc edi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
cmp edi, eax
jl 0x1400057c2
mov r14, qword [rsp + 0x90]
xor edi, edi
jmp 0x14000583b
mov rcx, qword [rsp + 0x110]
call fcn.1400067cc
mov rcx, qword [rsp + 0xe8]
xor edi, edi
mov qword [rsp + 0x110], rdi
call fcn.1400067cc
mov r14, qword [rsp + 0x90]
mov qword [rsp + 0xe8], rdi
jmp 0x14000583b
mov r14, qword [rsp + 0x90]
xor edi, edi
jmp 0x14000583b
mov r14, qword [rsp + 0x90]
jmp 0x14000583b
mov r14, qword [rsp + 0x90]
jmp 0x14000583b
mov r14, qword [rsp + 0x90]
lea rcx, [rsp + 0x1d0]
mov dword [rsp + 0x1d8], edi
call qword [sym.imp.GDI32.dll_CreateFontIndirectW]
test rax, rax
jne 0x140005866
lea rcx, [0x140015368]
call fcn.140006efc
jmp 0x1400062d2
mov rdx, rax
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea r9, [rsp + 0x80]
mov rdx, rsi
mov r8d, eax
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp dword [rbx + 0x570], r15d
je 0x1400058b0
mov eax, dword [rsp + 0x1d0]
cdq
sub eax, edx
sar eax, 1
neg eax
add dword [rsp + 0x80], eax
mov ecx, dword [rsp + 0x84]
mov eax, ecx
cdq
and edx, 7
add eax, edx
movzx edx, word [rbx + 0x564]
sar eax, 3
add ecx, eax
mov dword [rsp + 0x84], ecx
movzx ecx, word [rsp + 0x80]
call fcn.140003590
movzx edx, word [rbx + 0x564]
movzx ecx, word [rsp + 0x84]
call fcn.140003590
mov ecx, dword [rbx + 0x628]
mov eax, dword [rbx + 0x62c]
mov dword [rsp + 0x80], ecx
mov dword [rbx + 0x40c], ecx
mov rdx, r14
mov rcx, r13
mov dword [rsp + 0x84], eax
mov dword [rbx + 0x410], eax
call qword [sym.imp.GDI32.dll_SelectObject]
lea rcx, [rsp + 0x340]
mov dword [rsp + 0x340], 0x114
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x1400059d2
xor r12d, r12d
cmp dword [rsp + 0x350], 2
sete r15b
test r15d, r15d
jne 0x14000596e
cmp dword [rsp + 0x348], 0x5a
jae 0x14000596e
mov dword [rsp + 0x9c], r12d
jmp 0x140005975
mov dword [rsp + 0x9c], ebp
test r15d, r15d
je 0x1400059d5
mov rax, qword [rbx + 0x40c]
mov r8, qword [rsp + 0x170]
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x230], rax
lea rax, [rsp + 0x238]
mov qword [rsp + 0x30], r12
mov r9d, 0x104
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x28], 0x104
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov r11, qword [rsp + 0x4d0]
mov qword [rsp + 0x170], r11
jmp 0x1400059eb
xor r12d, r12d
cmp dword [rbx + 0x55c], 0
jne 0x1400059eb
cmp dword [rbx + 0x408], 0
je 0x14000627e
lea rdx, [rsp + 0x160]
mov rcx, r13
call qword [sym.imp.GDI32.dll_StartDocW]
test eax, eax
jle 0x14000627e
test r15d, r15d
je 0x140005a68
cmp dword [rbx + 0x584], 0
je 0x140005a3d
xor r15d, r15d
lea r9, [rsp + 0x230]
mov edx, 0x1385
mov r8d, 0x10c
mov rcx, r13
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], r15d
call qword [sym.imp.GDI32.dll_ExtEscape]
jmp 0x140005a8e
xor r15d, r15d
lea r9, [rsp + 0x230]
mov edx, 0x1387
mov r8d, 0x10c
mov rcx, r13
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], r15d
call qword [sym.imp.GDI32.dll_ExtEscape]
jmp 0x140005a8e
xor r15d, r15d
lea r9, [rbx + 0x40c]
mov edx, 0x1387
lea r8d, [r15 + 8]
mov rcx, r13
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], r15d
call qword [sym.imp.GDI32.dll_ExtEscape]
mov rcx, r13
call qword [sym.imp.GDI32.dll_StartPage]
test eax, eax
js 0x14000627b
mov eax, dword [rbx + 0x40c]
cdq
sub eax, edx
sar eax, 1
mov r12d, eax
mov eax, dword [rbx + 0x410]
cdq
sub eax, edx
sar eax, 1
cmp dword [rbx + 0x55c], 0
mov edi, eax
je 0x140005f93
cmp dword [rbx + 0x580], 0
mov word [rsp + 0xb8], r15w
mov word [rsp + 0xba], bp
mov word [rsp + 0xbc], r15w
mov word [rsp + 0xbe], r15w
mov word [rsp + 0xc0], r15w
mov word [rsp + 0xc2], r15w
mov word [rsp + 0xc4], r15w
mov word [rsp + 0xc6], bp
je 0x140005b90
mov rcx, r13
mov r14, r13
mov qword [rsp + 0x130], r13
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov edx, dword [rsp + 0x84]
mov rcx, r14
mov r13, rax
mov eax, dword [rsp + 0x80]
cmp eax, edx
cmovg edx, eax
mov r8d, edx
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov rcx, r13
mov rdx, rax
mov qword [rsp + 0x140], rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov rdx, qword [rsp + 0x90]
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r14
call qword [sym.imp.GDI32.dll_GetTextAlign]
mov rcx, r13
mov edx, eax
call qword [sym.imp.GDI32.dll_SetTextAlign]
mov rcx, r13
call qword [sym.imp.GDI32.dll_BeginPath]
jmp 0x140005bab
mov rax, qword [rsp + 0xd0]
mov r14, r15
mov qword [rsp + 0x130], r15
mov qword [rsp + 0x140], rax
mov eax, dword [rsp + 0x80]
cdq
sub eax, edx
sar eax, 1
neg eax
cmp dword [rbx + 0x570], 0
mov ecx, eax
mov dword [rsp + 0xc8], eax
je 0x140005be6
mov eax, dword [rsp + 0x1d0]
cdq
and edx, 3
add eax, edx
sar eax, 2
neg eax
add ecx, eax
mov dword [rsp + 0xc8], ecx
mov eax, dword [rsp + 0x84]
movzx r8d, word [rbx + 0x564]
lea rcx, [rsp + 0xc8]
cdq
and edx, 3
add eax, edx
lea rdx, [rsp + 0x128]
sar eax, 2
neg eax
mov dword [rsp + 0xcc], eax
call fcn.140003610
mov eax, dword [rsp + 0x128]
sub edi, dword [rsp + 0x12c]
mov r8d, dword [rbx + 0x568]
add eax, r12d
mov edx, 3
xor ecx, ecx
mov dword [rsp + 0x88], eax
mov dword [rsp + 0x8c], edi
call qword [sym.imp.GDI32.dll_CreatePen]
mov rcx, r13
mov rdx, rax
mov r15, rax
mov qword [rsp + 0xd0], rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [rbx + 0x568]
mov qword [rsp + 0x120], rax
call qword [sym.imp.GDI32.dll_CreateSolidBrush]
mov rcx, r13
mov rdx, rax
mov qword [rsp + 0xb0], rax
call qword [sym.imp.GDI32.dll_SelectObject]
xor edi, edi
mov qword [rsp + 0xa8], rax
movsxd rax, dword [rsp + 0x98]
mov r12, rdi
test rax, rax
jle 0x140005e1e
mov ebp, dword [rsp + 0xa0]
movsxd r14, dword [rsp + 0x98]
nop dword [rax + rax]
mov rcx, qword [rsp + 0x110]
test rcx, rcx
je 0x140005cd4
movzx ebx, word [rcx + r12*2]
jmp 0x140005cfb
movzx ebx, word [rsi]
mov rdx, rsi
mov rcx, rsi
call fcn.140006eb0
cmp eax, 0xffffffff
jne 0x140005cf7
movzx eax, word [rsi + 2]
add rsi, 2
shl ebx, 8
or ebx, eax
inc r12
add rsi, 2
lea rax, [rsp + 0xb8]
lea r9, [rsp + 0x148]
mov r8d, ebp
mov qword [rsp + 0x30], rax
mov edx, ebx
mov rcx, r13
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], edi
call qword [sym.imp.GDI32.dll_GetGlyphOutlineW]
mov r15d, eax
cmp eax, 0xffffffff
je 0x140005e09
mov rcx, r15
call fcn.14000680c
lea r9, [rsp + 0x148]
mov r8d, ebp
mov rdi, rax
lea rax, [rsp + 0xb8]
mov edx, ebx
mov qword [rsp + 0x30], rax
mov rcx, r13
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], r15d
call qword [sym.imp.GDI32.dll_GetGlyphOutlineW]
mov ecx, dword [rdi + 0xc]
call fcn.1400036a0
mov ebx, dword [rsp + 0x8c]
mov ecx, dword [rdi + 8]
sub ebx, eax
call fcn.1400036a0
xor r9d, r9d
add eax, dword [rsp + 0x88]
mov r8d, ebx
mov rcx, r13
mov edx, eax
call qword [sym.imp.GDI32.dll_MoveToEx]
lea r9, [rsp + 0x88]
mov r8d, r15d
mov rdx, rdi
mov rcx, r13
call fcn.140003350
mov rcx, rdi
call fcn.1400067cc
movsx r11d, word [rsp + 0x158]
movsxd rax, dword [rsp + 0x9c]
add dword [rsp + 0x88], r11d
test rax, rax
je 0x140005de9
movsx eax, word [rsp + 0x15a]
add dword [rsp + 0x8c], eax
jmp 0x140005df8
movsx eax, word [rsp + 0x15a]
sub dword [rsp + 0x8c], eax
inc r12
mov edi, 0
cmp r12, r14
jl 0x140005cc0
mov r14, qword [rsp + 0x130]
mov r15, qword [rsp + 0xd0]
mov ebp, 1
test r14, r14
je 0x140005f47
mov rcx, r13
call qword [sym.imp.GDI32.dll_EndPath]
mov rcx, r13
call qword [sym.imp.GDI32.dll_FlattenPath]
test eax, eax
je 0x140005f19
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetPath]
mov ebx, eax
test eax, eax
jle 0x140005f23
lea ecx, [rbx*8]
call fcn.14000680c
mov rcx, rbx
mov rdi, rax
call fcn.14000680c
mov r9d, ebx
mov rdx, rdi
mov rcx, r13
mov r8, rax
mov rsi, rax
call qword [sym.imp.GDI32.dll_GetPath]
mov rdx, r15
mov rcx, r14
movsxd rbx, eax
call qword [sym.imp.GDI32.dll_SelectObject]
mov r12, qword [rsp + 0xb0]
mov rcx, r14
mov rdx, r12
mov qword [rsp + 0x120], rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov r8d, dword [rdi + 4]
mov edx, dword [rdi]
xor r9d, r9d
mov rcx, r14
mov qword [rsp + 0xa8], rax
call qword [sym.imp.GDI32.dll_MoveToEx]
cmp rbp, rbx
jge 0x140005f07
cmp byte [rsi + rbp], 6
jne 0x140005eee
mov r8d, dword [rdi + rbp*8 + 4]
mov edx, dword [rdi + rbp*8]
xor r9d, r9d
mov rcx, r14
call qword [sym.imp.GDI32.dll_MoveToEx]
jmp 0x140005eff
mov r8d, dword [rdi + rbp*8 + 4]
mov edx, dword [rdi + rbp*8]
mov rcx, r14
call qword [sym.imp.GDI32.dll_LineTo]
inc rbp
cmp rbp, rbx
jl 0x140005ed2
mov rcx, rdi
call fcn.1400067cc
mov rcx, rsi
call fcn.1400067cc
jmp 0x140005f2b
mov r12, qword [rsp + 0xb0]
jmp 0x140005f2b
mov r12, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x140]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, r13
call qword [sym.imp.GDI32.dll_DeleteDC]
mov r13, r14
jmp 0x140005f4f
mov r12, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0x120]
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov rdx, qword [rsp + 0xa8]
mov rcx, r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r15
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, r12
call qword [sym.imp.GDI32.dll_DeleteObject]
mov r14, qword [rsp + 0x90]
xor r12d, r12d
jmp 0x14000627e
mov eax, dword [rsp + 0x84]
movzx r8d, word [rbx + 0x564]
lea rcx, [rsp + 0xa8]
cdq
mov dword [rsp + 0xa8], r15d
and edx, 3
add eax, edx
lea rdx, [rsp + 0xd0]
sar eax, 2
neg eax
mov dword [rsp + 0xac], eax
call fcn.140003610
mov edx, ebp
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetBkMode]
mov edx, dword [rbx + 0x568]
mov rcx, r13
call qword [sym.imp.GDI32.dll_SetTextColor]
lea rdx, [rsp + 0x188]
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetTextMetricsW]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea r9, [rsp + 0x138]
mov rdx, rsi
mov r8d, eax
mov rcx, r13
call qword [sym.imp.GDI32.dll_GetTextExtentPointW]
cmp dword [rbx + 0x624], 0
je 0x140006130
cmp dword [rbx + 0x638], 0
je 0x140006040
mov eax, dword [rbx + 0x630]
neg eax
mov dword [rbx + 0x630], eax
cmp dword [rbx + 0x63c], 0
je 0x140006057
mov eax, dword [rbx + 0x634]
neg eax
mov dword [rbx + 0x634], eax
mov eax, dword [rbx + 0x404]
movsx ecx, word [rbx + 0x564]
movzx r10d, word [rbx + 0x404]
pxor xmm1, xmm1
pxor xmm0, xmm0
cvtsi2sd xmm1, rax
mov eax, dword [rbx + 0x560]
lea r9, [rsp + 0x188]
mulsd xmm1, qword [0x140015360]
cvtsi2sd xmm0, rax
mov eax, 0x66666667
imul ecx
mov rcx, r13
sar edx, 2
mov eax, edx
shr eax, 0x1f
mulsd xmm1, xmm0
add edx, eax
mov eax, dword [rbx + 0x62c]
mov dword [rsp + 0x70], eax
mov eax, dword [rbx + 0x628]
addsd xmm1, qword [0x140015350]
cvttsd2si r8d, xmm1
mov dword [rsp + 0x68], eax
mov eax, dword [rbx + 0x634]
mov dword [rsp + 0x60], eax
mov eax, dword [rbx + 0x630]
mov dword [rsp + 0x58], eax
movzx eax, word [rbx + 0x620]
mov dword [rsp + 0x50], r8d
mov word [rsp + 0x48], ax
mov eax, dword [rbx + 0x568]
mov word [rsp + 0x40], dx
mov qword [rsp + 0x38], rsi
mov dword [rsp + 0x30], eax
mov eax, dword [rbx + 0x56c]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x138]
movzx r8d, r10w
movzx edx, r10w
mov dword [rsp + 0x20], eax
call fcn.1400050c0
xor r12d, r12d
jmp 0x14000627e
mov eax, dword [rbx + 0x628]
cdq
sub eax, edx
sar eax, 1
mov r10d, eax
mov eax, dword [rbx + 0x62c]
cdq
sub eax, edx
sar eax, 1
cmp dword [rbx + 0x638], 0
mov r8d, eax
je 0x140006175
mov ecx, dword [rbx + 0x630]
mov eax, 0xae147ae1
imul ecx, r10d
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
add r10d, edx
jmp 0x140006193
mov ecx, dword [rbx + 0x630]
mov eax, 0x51eb851f
imul ecx, r10d
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
add r10d, edx
cmp dword [rbx + 0x63c], 0
je 0x1400061bc
mov ecx, dword [rbx + 0x634]
mov eax, 0x51eb851f
imul ecx, r8d
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8d, edx
jmp 0x1400061da
mov ecx, dword [rbx + 0x634]
mov eax, 0xae147ae1
imul ecx, r8d
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8d, edx
mov eax, dword [rbx + 0x404]
movsx ecx, word [rbx + 0x564]
pxor xmm1, xmm1
pxor xmm0, xmm0
cvtsi2sd xmm1, rax
mov eax, dword [rbx + 0x560]
cvtsi2sd xmm0, rax
mulsd xmm1, qword [0x140015360]
mov eax, 0x66666667
imul ecx
mov rcx, r13
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx eax, word [rbx + 0x620]
mulsd xmm1, xmm0
addsd xmm1, qword [0x140015350]
cvttsd2si r9d, xmm1
mov dword [rsp + 0x50], r9d
mov word [rsp + 0x48], ax
mov eax, dword [rbx + 0x568]
mov word [rsp + 0x40], dx
mov qword [rsp + 0x38], rsi
mov dword [rsp + 0x30], eax
mov eax, dword [rbx + 0x56c]
lea r9, [rsp + 0x188]
mov edx, r10d
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x20], eax
call fcn.140004f40
xor r12d, r12d
jmp 0x14000627e
xor r12d, r12d
mov rcx, qword [rsp + 0x110]
test rcx, rcx
je 0x140006298
call fcn.1400067cc
mov qword [rsp + 0x110], r12
mov rcx, qword [rsp + 0xe8]
test rcx, rcx
je 0x1400062b2
call fcn.1400067cc
mov qword [rsp + 0xe8], r12
mov ecx, 0xd
call qword [sym.imp.GDI32.dll_GetStockObject]
mov rcx, r13
mov rdx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rbp, qword [rsp + 0x4c0]
mov r12, qword [rsp + 0x470]
mov rcx, qword [rsp + 0x460]
xor rcx, rsp
call fcn.140006ba0
add rsp, 0x478
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbx
ret