Function at 0x140012770
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov rbp, r8
mov r13, rcx
movups xmm0, xmmword [rdx]
movups xmmword [rsp + 0x28], xmm0
mov qword [rsp + 0x38], rdx
movq r9, xmm0
mov rax, r9
psrldq xmm0, 8
movq r15, xmm0
sub rax, r15
mov qword [rsp + 0x20], rax
xorps xmm2, xmm2
xorps xmm1, xmm1
cmp byte [r9], 0x2d
jne 0x1400113df
inc r9
mov qword [rsp + 0x28], r9
mov r12b, 1
jmp 0x1400113e2
xor r12b, r12b
xor r11d, r11d
mov ebx, r11d
xor dl, dl
mov byte [rsp + 0x98], dl
mov r10d, r11d
movsx eax, byte [r9]
movsd xmm3, qword [0x1400ea6b8]
cmp al, 0x30
jne 0x140011418
mov edi, r11d
lea rdx, [r9 + 1]
mov qword [rsp + 0x28], rdx
xor r14b, r14b
jmp 0x1400115e4
cmp al, 0x31
jl 0x140011b24
cmp al, 0x39
jg 0x140011b24
inc r9
mov qword [rsp + 0x28], r9
lea edi, [rax - 0x30]
movzx ecx, byte [r9]
mov rax, r9
test r12b, r12b
je 0x140011479
cmp cl, 0x30
jl 0x1400114be
cmp cl, 0x39
ja 0x1400114be
cmp edi, 0xccccccc
jb 0x140011458
jne 0x1400114b3
cmp cl, 0x38
ja 0x1400114b3
lea r9, [rax + 1]
mov qword [rsp + 0x28], r9
lea edi, [rdi + rdi*4]
movsx eax, byte [rax]
lea edi, [rdi - 0x18]
lea edi, [rax + rdi*2]
inc r10d
movzx ecx, byte [r9]
mov rax, r9
jmp 0x14001143f
cmp cl, 0x30
jl 0x1400114be
cmp cl, 0x39
ja 0x1400114be
cmp edi, 0x19999999
jb 0x140011492
jne 0x1400114b3
cmp cl, 0x35
ja 0x1400114b3
lea r9, [rax + 1]
mov qword [rsp + 0x28], r9
lea edi, [rdi + rdi*4]
movsx eax, byte [rax]
lea edi, [rdi - 0x18]
lea edi, [rax + rdi*2]
inc r10d
movzx ecx, byte [r9]
mov rax, r9
jmp 0x140011479
mov dl, 1
mov byte [rsp + 0x98], dl
mov ebx, edi
xor r14b, r14b
mov r8, rax
test dl, dl
je 0x1400115a1
movzx ecx, byte [rax]
test r12b, r12b
je 0x14001152b
cmp cl, 0x30
jl 0x1400115a1
movzx eax, byte [r9]
movabs rdx, 0xccccccccccccccc
nop dword [rax + rax]
cmp al, 0x39
jg 0x1400115a1
cmp rbx, rdx
jb 0x140011503
jne 0x140011577
cmp al, 0x38
jg 0x140011577
lea r9, [r8 + 1]
mov qword [rsp + 0x28], r9
movsx ecx, byte [r8]
sub ecx, 0x30
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
inc r10d
movzx eax, byte [r9]
mov r8, r9
cmp al, 0x30
jl 0x1400115a1
jmp 0x1400114f0
cmp cl, 0x30
jl 0x1400115a1
movzx eax, byte [r9]
movabs rdx, 0x1999999999999999
nop
cmp al, 0x39
jg 0x1400115a1
cmp rbx, rdx
jb 0x14001154f
jne 0x140011577
cmp al, 0x35
jg 0x140011577
lea r9, [r8 + 1]
mov qword [rsp + 0x28], r9
movsx ecx, byte [r8]
sub ecx, 0x30
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
inc r10d
movzx eax, byte [r9]
mov r8, r9
cmp al, 0x30
jl 0x1400115a1
jmp 0x140011540
xorps xmm1, xmm1
test rbx, rbx
js 0x140011586
cvtsi2sd xmm1, rbx
jmp 0x14001159e
mov rax, rbx
mov rcx, rbx
and eax, 1
shr rcx, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
mov rdx, r8
test r14b, r14b
je 0x1400115e4
cmp byte [r8], 0x30
jl 0x1400115e4
movzx eax, byte [r9]
mov rdx, r8
cmp al, 0x39
jg 0x1400115e4
lea rdx, [r8 + 1]
mov qword [rsp + 0x28], rdx
movsx eax, byte [r8]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm3
addsd xmm1, xmm0
movzx eax, byte [rdx]
mov r8, rdx
cmp al, 0x30
jge 0x1400115b3
mov esi, r11d
cmp byte [rdx], 0x2e
jne 0x14001170e
lea r9, [rdx + 1]
mov qword [rsp + 0x28], r9
movzx eax, byte [r9]
cmp al, 0x30
jl 0x14001174a
cmp al, 0x39
jg 0x14001174a
mov rdx, r9
test r14b, r14b
jne 0x1400116b2
mov rcx, r9
mov eax, edi
cmp byte [rsp + 0x98], sil
cmovne rax, rbx
mov rbx, rax
movzx r8d, byte [r9]
movabs r14, 0x1fffffffffffff
nop dword [rax + rax]
mov rdx, rcx
cmp r8b, 0x39
jg 0x140011685
cmp rbx, r14
ja 0x140011685
lea r9, [rcx + 1]
mov qword [rsp + 0x28], r9
movsx ecx, byte [rcx]
sub ecx, 0x30
lea rax, [rbx + rbx*4]
lea rbx, [rcx + rax*2]
dec esi
movzx r8d, byte [r9]
mov rcx, r9
mov rdx, r9
lea eax, [r10 + 1]
test rbx, rbx
cmove eax, r10d
mov r10d, eax
cmp r8b, 0x30
jge 0x140011640
xorps xmm1, xmm1
test rbx, rbx
js 0x140011694
cvtsi2sd xmm1, rbx
jmp 0x1400116ac
mov rcx, rbx
shr rcx, 1
mov rax, rbx
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r14b, 1
movzx eax, byte [rdx]
cmp al, 0x30
jl 0x14001170e
mov rax, rdx
nop dword [rax]
mov rdx, rax
cmp byte [r9], 0x39
jg 0x14001170e
lea rdx, [rax + 1]
mov r9, rdx
mov qword [rsp + 0x28], rdx
cmp r10d, 0x11
jge 0x140011705
movsx eax, byte [rax]
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm3
addsd xmm0, xmm1
movaps xmm1, xmm0
dec esi
lea eax, [r10 + 1]
comisd xmm0, xmm2
cmovbe eax, r10d
mov r10d, eax
mov rax, rdx
cmp byte [r9], 0x30
jge 0x1400116c0
movzx eax, byte [rdx]
cmp al, 0x65
je 0x14001171d
cmp al, 0x45
jne 0x14001183c
inc rdx
mov qword [rsp + 0x28], rdx
test r14b, r14b
jne 0x14001176c
mov eax, edi
mov rcx, rbx
cmp byte [rsp + 0x98], r11b
cmove rcx, rax
xorps xmm1, xmm1
test rcx, rcx
js 0x140011754
cvtsi2sd xmm1, rcx
jmp 0x140011769
mov eax, InitCommonControls
jmp 0x140011b29
mov rax, rcx
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r14b, 1
xor cl, cl
movzx eax, byte [rdx]
cmp al, 0x2b
je 0x14001177b
cmp al, 0x2d
jne 0x140011786
mov cl, 1
inc rdx
movzx eax, byte [rdx]
mov qword [rsp + 0x28], rdx
cmp al, 0x30
jl 0x1400118f6
cmp al, 0x39
jg 0x1400118f6
lea r8, [rdx + 1]
mov qword [rsp + 0x28], r8
movsx r11d, al
sub r11d, 0x30
movzx r9d, byte [r8]
test cl, cl
je 0x1400118ae
lea ecx, [rsi + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov r10d, edx
sar r10d, 2
mov eax, r10d
shr eax, 0x1f
add r10d, eax
cmp r9b, 0x30
jl 0x140011839
mov r9, r8
nop dword [rax]
cmp byte [r8], 0x39
jg 0x140011839
lea r8, [r9 + 1]
mov qword [rsp + 0x28], r8
lea r11d, [r11 + r11*4]
movsx eax, byte [r9]
lea r11d, [r11 - 0x18]
lea r11d, [rax + r11*2]
mov r9, r8
cmp r11d, r10d
jle 0x140011833
movzx edx, byte [r8]
cmp dl, 0x30
jl 0x140011833
mov rcx, r8
mov r9, rcx
cmp dl, 0x39
ja 0x14001182e
lea r8, [rcx + 1]
mov rcx, r8
mov r9, r8
movzx edx, byte [r8]
cmp dl, 0x30
jge 0x140011813
mov qword [rsp + 0x28], r8
cmp byte [r8], 0x30
jge 0x1400117e0
neg r11d
test r14b, r14b
je 0x140011967
lea ecx, [r11 + rsi]
cmp ecx, 0xfffffecc
jge 0x14001190a
divsd xmm1, qword [0x1400ea6c8]
lea eax, [rcx + 0x134]
cmp eax, 0xfffffecc
jl 0x140011932
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x1400e9210]
sub rcx, rax
movaps xmm2, xmm1
divsd xmm2, qword [rcx]
comisd xmm2, xmmword [0x1400ea6d0]
jbe 0x140011932
mov dword [r13 + 0x30], InitCommonControls
mov rax, qword [rsp + 0x20]
mov qword [r13 + 0x38], rax
jmp 0x140011b34
mov edx, 0x134
sub edx, esi
cmp r9b, 0x30
jl 0x14001183c
mov rax, r8
nop
cmp byte [r8], 0x39
jg 0x14001183c
lea r8, [rax + 1]
mov qword [rsp + 0x28], r8
lea r11d, [r11 + r11*4]
movsx eax, byte [rax]
lea r11d, [r11 - 0x18]
lea r11d, [rax + r11*2]
cmp r11d, edx
jg 0x140011898
mov rax, r8
cmp byte [r8], 0x30
jl 0x14001183c
jmp 0x1400118c0
sub rdx, r15
mov dword [r13 + 0x30], InitCommonControls
mov qword [r13 + 0x38], rdx
jmp 0x140011b34
movsxd rax, ecx
lea rax, [rax*8]
test ecx, ecx
js 0x140011879
lea rcx, [0x1400e9210]
movsd xmm2, qword [rax + rcx]
mulsd xmm2, xmm1
jmp 0x14001188a
test r12b, r12b
je 0x14001193e
xorps xmm2, xmmword [0x1400ea710]
movaps xmm1, xmm2
mov rcx, rbp
call fcn.140015660
test al, al
jne 0x140011b34
mov dword [r13 + 0x30], InitCommonControls
mov rax, qword [rsp + 0x20]
mov qword [r13 + 0x38], rax
jmp 0x140011b34
mov rax, qword [rbp + 0x40]
cmp byte [rsp + 0x98], 0
je 0x140011a91
test r12b, r12b
je 0x140011a19
neg rbx
mov rdx, qword [rbp + 0x38]
sub rax, rdx
cmp rax, 0x10
jge 0x1400119a4
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.1400108d0
mov rdx, qword [rbp + 0x38]
lea rax, [rdx + 0x10]
mov qword [rbp + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rdx], xmm0
mov qword [rdx], rbx
mov eax, 0x96
mov word [rdx + 0xe], ax
test rbx, rbx
js 0x1400119fe
mov eax, 0x196
mov word [rdx + 0xe], ax
movabs r8, 0xffffffff00000000
test r8, rbx
jne 0x1400119e4
mov eax, 0x1d6
mov word [rdx + 0xe], ax
test rbx, 0xffffffff80000000
jne 0x140011b34
or ax, 0x20
mov word [rdx + 0xe], ax
jmp 0x140011b34
cmp rbx, 0xffffffff80000000
jl 0x140011b34
mov eax, 0xb6
mov word [rdx + 0xe], ax
jmp 0x140011b34
mov rcx, qword [rbp + 0x38]
sub rax, rcx
cmp rax, 0x10
jge 0x140011a38
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.1400108d0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
mov qword [rcx], rbx
mov eax, 0x116
mov word [rcx + 0xe], ax
test rbx, rbx
js 0x140011a60
mov eax, 0x196
mov word [rcx + 0xe], ax
movabs r8, 0xffffffff00000000
test r8, rbx
jne 0x140011a77
or ax, 0x40
mov word [rcx + 0xe], ax
test rbx, 0xffffffff80000000
jne 0x140011b34
or ax, 0x20
mov word [rcx + 0xe], ax
jmp 0x140011b34
mov rcx, qword [rbp + 0x38]
sub rax, rcx
test r12b, r12b
je 0x140011ae1
neg edi
cmp rax, 0x10
jge 0x140011ab7
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.1400108d0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
movsxd rax, edi
mov qword [rcx], rax
mov eax, 0xb6
mov edx, 0x1f6
test edi, edi
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x140011b34
cmp rax, 0x10
jge 0x140011af9
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.1400108d0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
mov qword [rbp + 0x38], rax
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
mov eax, edi
mov qword [rcx], rax
shr edi, 0x1a
not di
and di, 0x20
mov eax, 0x1d6
or di, ax
mov word [rcx + 0xe], di
jmp 0x140011b34
mov eax, 3
sub r9, r15
mov dword [r13 + 0x30], eax
mov qword [r13 + 0x38], r9
movups xmm0, xmmword [rsp + 0x28]
mov rax, qword [rsp + 0x88]
movups xmmword [rax], xmm0
mov rbx, qword [rsp + 0x80]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov r14, r8
mov r15, rdx
mov rdi, rcx
inc qword [rdx]
lea r13, [r8 + 0x20]
mov rcx, qword [r13 + 0x18]
mov rax, qword [r13 + 0x20]
sub rax, rcx
cmp rax, 0x10
jge 0x140011bb1
mov edx, 1
mov rcx, r13
call fcn.1400108d0
mov rcx, qword [r13 + 0x18]
lea rax, [rcx + 0x10]
mov qword [r13 + 0x18], rax
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
mov edx, 3
mov word [rcx + 0xe], dx
movups xmm0, xmmword [r15]
movups xmmword [rbp - 0x50], xmm0
movabs rsi, 0x100002600
mov rcx, qword [rbp - 0x50]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x140011bf3
bt rsi, rax
jae 0x140011bf3
inc rcx
jmp 0x140011be0
mov qword [rbp - 0x50], rcx
movups xmm0, xmmword [rbp - 0x50]
movups xmmword [r15], xmm0
cmp dword [rdi + 0x30], 0
jne 0x14001228b
mov rax, qword [r15]
cmp byte [rax], 0x7d
jne 0x140011c3a
inc rax
mov qword [r15], rax
mov rax, qword [r14 + 0x38]
mov word [rax - 2], dx
movabs rcx, 0xffff000000000000
and qword [rax - 8], rcx
mov qword [rax - 0x10], 0
jmp 0x14001228b
mov dword [rbp + 0x48], 0
lea rdx, [0x1400ea5b0]
mov rax, qword [r15]
cmp byte [rax], 0x22
jne 0x14001227c
movups xmm0, xmmword [r15]
movups xmmword [rbp - 0x50], xmm0
mov qword [rbp - 0x40], r15
movq rsi, xmm0
inc rsi
mov qword [rbp - 0x50], rsi
xor r14d, r14d
mov r12, qword [rbp - 0x48]
movzx ebx, byte [rsi]
cmp bl, 0x5c
jne 0x140011ffb
mov r10, rsi
sub r10, r12
inc rsi
mov qword [rbp - 0x50], rsi
movzx ecx, byte [rsi]
movzx ebx, byte [rcx + rdx]
test bl, bl
je 0x140011c9f
inc rsi
jmp 0x14001200c
cmp cl, 0x75
jne 0x140012072
inc rsi
mov qword [rbp - 0x50], rsi
xor ebx, ebx
xor edx, edx
mov r8, rsi
nop word [rax + rax]
movsx ecx, byte [rsi]
shl ebx, 4
add ebx, ecx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140011cd4
add ebx, 0xffffffd0
jmp 0x140011cef
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x140011ce0
add ebx, 0xffffffc9
jmp 0x140011cef
sub cl, 0x61
cmp cl, 5
ja 0x140012065
add ebx, 0xffffffa9
lea rsi, [r8 + 1]
mov r8, rsi
mov qword [rbp - 0x50], rsi
inc edx
cmp edx, 4
jl 0x140011cc0
cmp dword [rdi + 0x30], 0
jne 0x1400120da
lea r9d, [rbx - 0xd800]
cmp r9d, 0x3ff
ja 0x140011dca
cmp byte [rsi], 0x5c
jne 0x140012058
inc rsi
mov qword [rbp - 0x50], rsi
cmp byte [rsi], 0x75
jne 0x140012058
inc rsi
mov qword [rbp - 0x50], rsi
xor ecx, ecx
xor r8d, r8d
nop dword [rax]
nop dword [rax + rax]
movsx edx, byte [rsi]
shl ecx, 4
add ecx, edx
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140011d64
add ecx, 0xffffffd0
jmp 0x140011d7b
lea eax, [rdx - 0x41]
cmp al, 5
ja 0x140011d70
add ecx, 0xffffffc9
jmp 0x140011d7b
sub dl, 0x61
cmp dl, 5
ja 0x140011d90
add ecx, 0xffffffa9
inc rsi
mov qword [rbp - 0x50], rsi
inc r8d
cmp r8d, 4
jl 0x140011d50
mov eax, dword [rdi + 0x30]
jmp 0x140011da2
mov dword [rdi + 0x30], 8
mov qword [rdi + 0x38], r10
xor ecx, ecx
mov eax, 8
test eax, eax
jne 0x1400120da
add ecx, 0xffff2400
cmp ecx, 0x3ff
ja 0x14001204b
mov ebx, r9d
shl ebx, 0xa
or ebx, ecx
add ebx, 0x10000
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp ebx, 0x7f
ja 0x140011e0a
cmp rax, 1
jge 0x140011df1
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov byte [rcx], bl
inc r14d
lea rdx, [0x1400ea5b0]
jmp 0x140011c73
cmp ebx, 0x7ff
ja 0x140011e7c
cmp rax, 1
jge 0x140011e29
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 6
or al, 0xc0
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011e5c
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
and bl, 0x3f
or bl, 0x80
mov byte [rcx], bl
add r14d, 2
lea rdx, [0x1400ea5b0]
jmp 0x140011c73
cmp ebx, 0xffff
ja 0x140011f27
cmp rax, 1
jge 0x140011e9f
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 0xc
or al, 0xe0
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011ed2
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011f07
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
and bl, 0x3f
or bl, 0x80
mov byte [rcx], bl
add r14d, 3
lea rdx, [0x1400ea5b0]
jmp 0x140011c73
cmp rax, 1
jge 0x140011f3e
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 0x12
or al, 0xf0
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011f71
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011fa6
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov eax, ebx
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rcx], al
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140011fdb
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
and bl, 0x3f
or bl, 0x80
mov byte [rcx], bl
add r14d, 4
lea rdx, [0x1400ea5b0]
jmp 0x140011c73
cmp bl, 0x22
je 0x14001209c
cmp bl, 0x20
jb 0x14001207f
inc rsi
mov qword [rbp - 0x50], rsi
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x140012039
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rdx, [0x1400ea5b0]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov byte [rcx], bl
inc r14d
jmp 0x140011c73
mov dword [rdi + 0x30], 9
mov qword [rdi + 0x38], r10
jmp 0x1400120d3
mov dword [rdi + 0x30], 9
mov qword [rdi + 0x38], r10
jmp 0x1400120da
mov dword [rdi + 0x30], 8
mov qword [rdi + 0x38], r10
jmp 0x1400120da
mov dword [rdi + 0x30], 0xa
mov qword [rdi + 0x38], r10
jmp 0x1400120da
sub rsi, r12
mov qword [rdi + 0x38], rsi
test bl, bl
jne 0x140012093
mov dword [rdi + 0x30], VariantTimeToDosDateTime
jmp 0x1400120da
mov dword [rdi + 0x30], reloc.OLEAUT32.dll_VariantTimeToDosDateTime
jmp 0x1400120da
inc rsi
mov qword [rbp - 0x50], rsi
mov rcx, qword [rdi + 0x18]
mov rax, qword [rdi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x1400120c5
mov edx, 1
mov rcx, rdi
call fcn.140010820
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 1]
mov qword [rdi + 0x18], rax
mov byte [rcx], 0
inc r14d
mov eax, dword [rdi + 0x30]
test eax, eax
je 0x1400120e0
mov r14, qword [rbp + 0x50]
jmp 0x140012146
lea esi, [r14 - 1]
mov eax, r14d
sub qword [rdi + 0x18], rax
mov rbx, qword [rdi + 0x18]
mov rcx, qword [r13 + 0x18]
mov rax, qword [r13 + 0x20]
sub rax, rcx
cmp rax, 0x10
jge 0x140012111
mov edx, 1
mov rcx, r13
call fcn.1400108d0
mov rcx, qword [r13 + 0x18]
lea rax, [rcx + 0x10]
mov qword [r13 + 0x18], rax
mov r14, qword [rbp + 0x50]
mov r8, qword [r14 + 0x10]
xorps xmm0, xmm0
movups xmmword [rcx], xmm0
lea rax, [0x1400e9cb0]
test rbx, rbx
cmovne rax, rbx
mov qword [rbp - 0x60], rax
mov dword [rbp - 0x58], esi
lea rdx, [rbp - 0x60]
call fcn.140017540
nop
movups xmm0, xmmword [rbp - 0x50]
movups xmmword [r15], xmm0
cmp dword [rdi + 0x30], 0
jne 0x14001228b
movups xmmword [rbp - 0x38], xmm0
mov rcx, qword [rbp - 0x38]
movabs rsi, 0x100002600
nop word [rax + rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x140012183
bt rsi, rax
jae 0x140012183
inc rcx
jmp 0x140012170
mov qword [rbp - 0x38], rcx
movups xmm0, xmmword [rbp - 0x38]
movups xmmword [r15], xmm0
cmp dword [rdi + 0x30], 0
jne 0x14001228b
mov rax, qword [r15]
cmp byte [rax], 0x3a
jne 0x14001226f
inc rax
mov qword [r15], rax
movups xmm0, xmmword [r15]
movups xmmword [rbp - 0x20], xmm0
mov rcx, qword [rbp - 0x20]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x1400121ca
bt rsi, rax
jae 0x1400121ca
inc rcx
jmp 0x1400121b7
mov qword [rbp - 0x20], rcx
movups xmm0, xmmword [rbp - 0x20]
movups xmmword [r15], xmm0
cmp dword [rdi + 0x30], 0
jne 0x14001228b
mov r8, r14
mov rdx, r15
mov rcx, rdi
call fcn.140012770
cmp dword [rdi + 0x30], 0
jne 0x14001228b
mov rcx, r15
call fcn.140012b80
cmp dword [rdi + 0x30], 0
jne 0x14001228b
mov ebx, dword [rbp + 0x48]
inc ebx
mov dword [rbp + 0x48], ebx
mov rax, qword [r15]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x140012239
inc rax
mov qword [r15], rax
mov rdx, r15
mov rcx, rdi
call fcn.140012bd0
cmp dword [rdi + 0x30], 0
jne 0x14001228b
jmp 0x140011c41
cmp cl, 0x7d
je 0x14001224b
sub rax, qword [r15 + 8]
mov dword [rdi + 0x30], 6
jmp 0x140012287
inc rax
mov qword [r15], rax
mov edx, ebx
mov rcx, r14
call fcn.140015750
test al, al
jne 0x14001228b
mov rax, qword [r15]
sub rax, qword [r15 + 8]
mov dword [rdi + 0x30], InitCommonControls
jmp 0x140012287
sub rax, qword [r15 + 8]
mov dword [rdi + 0x30], 5
jmp 0x140012287
sub rax, qword [r15 + 8]
mov dword [rdi + 0x30], 4
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0xc0]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 8], rbx
mov byte [rsp + 0x20], r9b
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov r13, r8
mov r14, rcx
movups xmm0, xmmword [rdx]
movups xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], rdx
movq rbx, xmm0
inc rbx
mov qword [rbp - 0x20], rbx
mov rsi, rcx
mov qword [rbp - 0x30], rcx
xor r15d, r15d
mov dword [rbp - 0x28], r15d
mov r12, qword [rbp - 0x18]
lea rdx, [0x1400ea5b0]
nop word [rax + rax]
movzx edi, byte [rbx]
cmp dil, 0x5c
jne 0x1400125fe
mov r10, rbx
sub r10, r12
inc rbx
mov qword [rbp - 0x20], rbx
movzx ecx, byte [rbx]
movzx edi, byte [rcx + rdx]
test dil, dil
je 0x1400124be
inc rbx
jmp 0x140012611
cmp cl, 0x75
jne 0x140012671
inc rbx
mov qword [rbp - 0x20], rbx
xor edx, edx
xor r8d, r8d
mov r9, rbx
nop word [rax + rax]
movsx ecx, byte [rbx]
shl edx, 4
add edx, ecx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1400124f4
add edx, 0xffffffd0
jmp 0x14001250f
lea eax, [rcx - 0x41]
cmp al, 5
ja 0x140012500
add edx, 0xffffffc9
jmp 0x14001250f
sub cl, 0x61
cmp cl, 5
ja 0x140012663
add edx, 0xffffffa9
lea rbx, [r9 + 1]
mov r9, rbx
mov qword [rbp - 0x20], rbx
inc r8d
cmp r8d, 4
jl 0x1400124e0
cmp dword [r14 + 0x30], 0
jne 0x140012740
lea r9d, [rdx - 0xd800]
cmp r9d, 0x3ff
ja 0x1400125e8
cmp byte [rbx], 0x5c
jne 0x140012655
inc rbx
mov qword [rbp - 0x20], rbx
cmp byte [rbx], 0x75
jne 0x140012655
inc rbx
mov qword [rbp - 0x20], rbx
xor ecx, ecx
xor r8d, r8d
nop word [rax + rax]
movsx edx, byte [rbx]
shl ecx, 4
add ecx, edx
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140012584
add ecx, 0xffffffd0
jmp 0x14001259b
lea eax, [rdx - 0x41]
cmp al, 5
ja 0x140012590
add ecx, 0xffffffc9
jmp 0x14001259b
sub dl, 0x61
cmp dl, 5
ja 0x1400125b1
add ecx, 0xffffffa9
inc rbx
mov qword [rbp - 0x20], rbx
inc r8d
cmp r8d, 4
jl 0x140012570
mov eax, dword [r14 + 0x30]
jmp 0x1400125c4
mov dword [r14 + 0x30], 8
mov qword [r14 + 0x38], r10
xor ecx, ecx
mov eax, 8
test eax, eax
jne 0x1400126d6
add ecx, 0xffff2400
cmp ecx, 0x3ff
ja 0x140012655
mov edx, r9d
shl edx, 0xa
or edx, ecx
add edx, 0x10000
lea rcx, [rbp - 0x30]
call fcn.140010680
mov r15d, dword [rbp - 0x28]
mov rsi, qword [rbp - 0x30]
jmp 0x140012480
cmp dil, 0x22
je 0x14001269f
cmp dil, 0x20
jb 0x14001267f
inc rbx
mov qword [rbp - 0x20], rbx
mov rcx, qword [rsi + 0x18]
mov rax, qword [rsi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x14001263e
mov edx, 1
mov rcx, rsi
call fcn.140010820
mov rcx, qword [rsi + 0x18]
lea rdx, [0x1400ea5b0]
lea rax, [rcx + 1]
mov qword [rsi + 0x18], rax
mov byte [rcx], dil
inc r15d
mov dword [rbp - 0x28], r15d
jmp 0x140012490
mov dword [r14 + 0x30], 9
mov qword [r14 + 0x38], r10
jmp 0x1400126d6
mov dword [r14 + 0x30], 8
mov qword [r14 + 0x38], r10
jmp 0x1400126d6
mov dword [r14 + 0x30], 0xa
mov qword [r14 + 0x38], r10
jmp 0x1400126d6
sub rbx, r12
mov qword [r14 + 0x38], rbx
test dil, dil
jne 0x140012695
mov dword [r14 + 0x30], VariantTimeToDosDateTime
jmp 0x1400126d6
mov dword [r14 + 0x30], reloc.OLEAUT32.dll_VariantTimeToDosDateTime
jmp 0x1400126d6
inc rbx
mov qword [rbp - 0x20], rbx
mov rcx, qword [rsi + 0x18]
mov rax, qword [rsi + 0x20]
sub rax, rcx
cmp rax, 1
jge 0x1400126c8
mov edx, 1
mov rcx, rsi
call fcn.140010820
mov rcx, qword [rsi + 0x18]
lea rax, [rcx + 1]
mov qword [rsi + 0x18], rax
mov byte [rcx], 0
inc r15d
cmp dword [r14 + 0x30], 0
jne 0x140012740
lea edi, [r15 - 1]
mov eax, r15d
sub qword [rsi + 0x18], rax
mov rbx, qword [rsi + 0x18]
mov rcx, qword [r13 + 0x38]
mov rax, qword [r13 + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x14001270f
mov edx, 1
lea rcx, [r13 + 0x20]
call fcn.1400108d0
mov rcx, qword [r13 + 0x38]
lea rax, [rcx + 0x10]
mov qword [r13 + 0x38], rax
lea rax, [0x1400e9cb0]
test rbx, rbx
mov r8, qword [r13 + 0x10]
xorps xmm0, xmm0
cmovne rax, rbx
movups xmmword [rcx], xmm0
mov qword [rbp - 0x30], rax
mov dword [rbp - 0x28], edi
lea rdx, [rbp - 0x30]
call fcn.140017540
nop
movups xmm0, xmmword [rbp - 0x20]
mov rax, qword [rbp + 0x48]
movups xmmword [rax], xmm0
mov rbx, qword [rsp + 0x90]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rdi
sub rsp, 0x50
mov rdi, rcx
mov rbp, r8
mov rcx, qword [rdx]
mov rbx, rdx
movsx eax, byte [rcx]
add eax, 0xffffffde
cmp eax, 0x59
ja case.0x1400127b6.35
lea rdx, [0x140000000]
cdqe
movzx eax, byte [rdx + rax + 0x12b20]
mov r9d, dword [rdx + rax*4 + 0x12b04]
add r9, rdx
jmp r9
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140012822
inc rax
mov qword [rbx], rax
mov rcx, qword [r8 + 0x38]
mov rax, qword [r8 + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x140012804
mov edx, 1
lea rcx, [r8 + 0x20]
call fcn.1400108d0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbp + 0x38], rax
movups xmmword [rcx], xmm0
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
ret
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x72
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x75
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x140012822
inc rax
mov dl, 1
mov rcx, rbp
mov qword [rbx], rax
call fcn.140014fe0
test al, al
jne 0x140012acd
mov rax, qword [rbx]
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], InitCommonControls
mov qword [rdi + 0x38], rax
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
ret
lea rax, [rcx + 1]
mov qword [rbx], rax
cmp byte [rax], 0x61
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x6c
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x73
jne 0x140012822
inc rax
mov qword [rbx], rax
cmp byte [rax], 0x65
jne 0x140012822
inc rax
xor edx, edx
jmp 0x140012868
xor r9d, r9d
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
jmp 0x140012430
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
jmp 0x140011b60
lea rax, [rcx + 1]
mov qword [rsp + 0x60], rsi
mov qword [rbx], rax
mov rcx, qword [r8 + 0x38]
mov rax, qword [r8 + 0x40]
sub rax, rcx
mov qword [rsp + 0x68], r14
cmp rax, 0x10
jge 0x14001294c
mov edx, 1
lea rcx, [r8 + 0x20]
call fcn.1400108d0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
xorps xmm0, xmm0
mov qword [rbp + 0x38], rax
mov edx, 4
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], dx
movabs r14, 0x100002600
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop word [rax + rax]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x140012993
bt r14, rax
jae 0x140012993
inc rcx
jmp 0x140012980
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x140012ac3
mov rax, qword [rbx]
cmp byte [rax], 0x5d
jne 0x1400129d9
inc rax
movabs rcx, 0xffff000000000000
mov qword [rbx], rax
mov rax, qword [rbp + 0x38]
mov word [rax - 2], dx
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x140012ac3
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
xor esi, esi
call fcn.140012770
cmp dword [rdi + 0x30], esi
jne 0x140012ac3
nop dword [rax]
nop word [rax + rax]
movups xmm0, xmmword [rbx]
inc esi
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
nop
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x140012a23
bt r14, rax
jae 0x140012a23
inc rcx
jmp 0x140012a10
mov qword [rsp + 0x20], rcx
movups xmm0, xmmword [rsp + 0x20]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x140012ac3
mov rax, qword [rbx]
movzx ecx, byte [rax]
cmp cl, 0x2c
jne 0x140012a98
inc rax
mov qword [rbx], rax
movups xmm0, xmmword [rbx]
movups xmmword [rsp + 0x38], xmm0
mov rcx, qword [rsp + 0x38]
movsx rax, byte [rcx]
cmp al, 0x20
ja 0x140012a6b
bt r14, rax
jae 0x140012a6b
inc rcx
jmp 0x140012a58
mov qword [rsp + 0x38], rcx
movups xmm0, xmmword [rsp + 0x38]
movups xmmword [rbx], xmm0
cmp dword [rdi + 0x30], 0
jne 0x140012ac3
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.140012770
cmp dword [rdi + 0x30], 0
je 0x140012a00
jmp 0x140012ac3
cmp cl, 0x5d
jne 0x140012add
inc rax
mov edx, esi
mov rcx, rbp
mov qword [rbx], rax
call fcn.1400156c0
test al, al
jne 0x140012ac3
mov rax, qword [rbx]
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], InitCommonControls
mov qword [rdi + 0x38], rax
mov rsi, qword [rsp + 0x60]
mov r14, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
ret
sub rax, qword [rbx + 8]
mov dword [rdi + 0x30], 7
jmp 0x140012abf
mov rdx, rbx
mov rcx, rdi
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
jmp 0x140011380