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

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3d38]
mov eax, 0x3e38
call fcn.1800fd960
sub rsp, rax
movaps xmmword [rsp + 0x3e20], xmm6
movaps xmmword [rsp + 0x3e10], xmm7
movaps xmmword [rsp + 0x3e00], xmm8
movaps xmmword [rsp + 0x3df0], xmm9
movaps xmmword [rsp + 0x3de0], xmm10
movaps xmmword [rsp + 0x3dd0], xmm11
movaps xmmword [rsp + 0x3dc0], xmm12
movaps xmmword [rsp + 0x3db0], xmm13
movaps xmmword [rsp + 0x3da0], xmm14
movaps xmmword [rsp + 0x3d90], xmm15
mov rax, qword [0x180121650]
xor rax, rsp
mov qword [rbp + 0x3c80], rax
mov r14d, dword [rbp + 0x3db0]
mov rsi, r9
mov r9, qword [rbp + 0x3da8]
mov r10, rcx
mov r11, qword [rbp + 0x3db8]
mov edi, r14d
mov rax, qword [rbp - 0x50]
imul r15d, r14d, 0x468
mov qword [rbp - 0x28], rcx
mov rcx, qword [rbp + 0x3dc0]
mov qword [rbp - 0x58], r8
mov qword [rbp - 0x10], rdx
mov qword [rbp - 0x80], r9
mov qword [rbp - 0x18], r11
mov qword [rbp - 8], rcx
cmp r14d, r15d
ja 0x180050af4
mov r12, qword [rbp]
xor ebx, ebx
mov r13, qword [rbp]
nop word [rax + rax]
cmp edi, 0xf81
ja 0x1800508cf
je 0x1800508ac
cmp edi, 2
je 0x18005090e
cmp edi, 0x15
je 0x180050861
cmp edi, 0x118
jne 0x1800508e7
mov eax, dword [rcx]
cmp eax, 0xc
ja 0x180050902
mov dword [rsp + 0x78], eax
lea rdx, [rbp - 0x60]
mov eax, dword [r10]
lea rcx, [rbp - 0x50]
mov dword [rbp - 0x60], eax
mov rax, qword [rsi]
mov qword [rbp + 0x10], rax
mov rax, qword [r8]
mov r8, r11
mov qword [rbp + 0x18], rax
lea rax, [rbp + 0x18]
mov qword [rsp + 0x40], rax
lea rax, [rbp + 0x30]
mov qword [rsp + 0x38], r9
lea r9, [rbp + 0x10]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x78]
mov dword [rsp + 0x28], 0xa5
mov qword [rsp + 0x20], rax
mov qword [rbp - 0x50], 0x3804
call fcn.18004d610
mov r9, qword [rbp - 0x80]
mov r10, qword [rbp - 0x28]
mov r11, qword [rbp - 0x18]
mov r8, qword [rbp - 0x58]
mov qword [rbp - 0x50], rax
jmp 0x1800508e7
movups xmm0, xmmword [str.MARKER_Create_Marker:_Error_writing_to_marker_file]
movzx ecx, word [0x18010b418]
movups xmm1, xmmword [0x18010b3f8]
mov word [rbp + 0x3870], cx
movzx ecx, byte [0x18010b41a]
movups xmmword [rbp + 0x3840], xmm0
mov byte [rbp + 0x3872], cl
movups xmm0, xmmword [0x18010b408]
mov qword [rbp + 0x28], r13
movups xmmword [rbp + 0x3850], xmm1
movups xmmword [rbp + 0x3860], xmm0
jmp 0x1800508e7
mov rdx, qword [rbp + 0x3da0]
movsxd rcx, dword [rsi]
add rcx, r9
mov qword [rbp - 0x30], r12
mov qword [rbp + 8], rcx
mov ecx, ebx
cmp dword [rdx], 1
setne cl
mov dword [rsp + 0x5c], ecx
jmp 0x1800508e7
cmp edi, 0x1eed
je 0x18005097b
cmp edi, 0xceb8
je 0x180050af4
imul ecx, r14d, 0xbc
add edi, ecx
cmp edi, r15d
ja 0x180050af4
mov rcx, qword [rbp - 8]
jmp 0x1800507b0
mov rax, 0xffffffffffffffef
jmp 0x180050af4
mov edx, dword [r8]
test edx, edx
je 0x180050926
cmp edx, 1
je 0x180050964
mov rax, 0xfffffffffffffffc
jmp 0x180050af4
mov ecx, 0x10
nop dword [rax + rax]
cmp ecx, 0x10
je 0x180050943
cmp ecx, 0x590
je 0x180050af4
jmp 0x180050956
cmp dword [r9], ebx
mov eax, ebx
mov dword [r11 + 0x2c], ebx
seta al
mov dword [r11 + 0x30], eax
mov rax, rbx
add ecx, 0x580
cmp ecx, 0x1080
jbe 0x180050930
cmp dword [r9], ebx
mov eax, ebx
seta al
mov dword [r11 + 0x298], eax
mov rax, rbx
jmp 0x180050af4
mov edx, 0x114
mov ecx, edx
sub ecx, 0x113
je 0x180050aed
cmp ecx, 1
je 0x1800509a2
dec edx
cmp edx, 0x112
ja 0x180050980
jmp 0x180050af4
movsd xmm15, qword [0x180119c30]
mov r8d, 0x3f6
movsd xmm7, qword [0x180119708]
xorps xmm13, xmm13
movsd xmm10, qword [0x1801196e0]
movsd xmm14, qword [0x1801196f0]
movsd xmm9, qword [0x1801196d0]
lea esi, [r8 - 0x1e]
movsd xmm8, qword [0x180119730]
movsd xmm12, qword [0x180119700]
mov rdi, qword [rbp]
mov r12d, dword [rsp + 0x60]
movsd xmm6, qword [rsp + 0x70]
movsd xmm11, qword [rbp]
mov r15d, dword [rsp + 0x64]
mov r13d, dword [rsp + 0x58]
mov r14d, 0x41
lea rcx, [0x180104140]
mov dword [rsp + 0x78], r14d
lea rdx, [0x180000000]
nop word [rax + rax]
cmp r14d, 0x370
ja 0x180050dc8
je 0x180050db2
cmp r14d, 0x41
je 0x180050da9
cmp r14d, 0xe4
je 0x180050d44
cmp r14d, 0x187
je 0x180050c13
cmp r14d, 0x22a
je 0x180050b56
cmp r14d, 0x2cd
jne 0x180051b58
mov rsi, qword [rbp + 8]
cmp r13d, r8d
mov r12d, 0xffffffff
cmovg r13d, r8d
mov dword [rsp + 0x60], r12d
mov dword [rsp + 0x58], r13d
cmp r9, rsi
jae 0x180050aed
cmp byte [r9], 0x2e
jne 0x180051b53
inc r9
mov dword [rsp + 0x60], ebx
mov qword [rbp - 0x80], r9
mov r12d, ebx
cmp r9, rsi
jae 0x180050aed
nop
movsx edx, byte [r9]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180051b53
lea r12d, [r12 + r12*4]
inc r9
mov qword [rbp - 0x80], r9
lea r12d, [r12 - 0x18]
lea r12d, [rdx + r12*2]
mov dword [rsp + 0x60], r12d
cmp r9, rsi
jb 0x180050ac0
mov dword [rbp - 0x50], ebx
mov rax, qword [rbp - 0x50]
mov rcx, qword [rbp + 0x3c80]
xor rcx, rsp
call fcn.1800fd9d0
lea r11, [rsp + 0x3e38]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
movaps xmm10, xmmword [r11 - 0x58]
movaps xmm11, xmmword [r11 - 0x68]
movaps xmm12, xmmword [r11 - 0x78]
movaps xmm13, xmmword [r11 - 0x88]
movaps xmm14, xmmword [r11 - 0x98]
movaps xmm15, xmmword [r11 - 0xa8]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov rsi, qword [rbp + 8]
cmp r9, rsi
jae 0x180051b53
cmp byte [r9], 0x24
jne 0x180051b53
mov r8d, 0x17
mov eax, r8d
sub eax, 0x16
je 0x180050ba5
cmp eax, 1
jne 0x180050bf8
mov r10d, dword [rsp + 0x58]
test r10d, r10d
jle 0x180050bf8
mov rax, qword [rbp + 0x3da0]
mov dword [rsp + 0x5c], r10d
cmp dword [rax], 0
je 0x180050bf8
lea ecx, [r10 - 1]
mov dword [rsp + 0x5c], ecx
jmp 0x180050bf8
inc r9
mov dword [rsp + 0x58], ebx
mov r10d, ebx
cmp r9, rsi
jae 0x180050bf8
cmp byte [r9], 0x30
jne 0x180050bc4
mov dword [rbp - 0x70], 1
inc r9
cmp r9, rsi
jae 0x180050bf8
nop dword [rax]
movsx edx, byte [r9]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180050bef
lea r10d, [r10 + r10*4]
inc r9
lea r10d, [r10 - 0x18]
lea r10d, [rdx + r10*2]
cmp r9, rsi
jb 0x180050bd0
mov dword [rsp + 0x58], r10d
mov qword [rbp - 0x80], r9
dec r8d
cmp r8d, 0x15
ja 0x180050b73
mov qword [rbp - 0x80], r9
mov r13d, dword [rsp + 0x58]
jmp 0x180051b53
mov r14d, dword [rsp + 0x68]
inc r9
mov rsi, qword [rbp + 8]
mov qword [rbp - 0x80], r9
nop dword [rax]
nop word [rax + rax]
mov eax, 0x35
cmp eax, 0x35
jne 0x180050cc5
movsx r14d, byte [r9]
lea eax, [r14 - 0x20]
cmp eax, 0x10
ja case.0x180050c57.33
cdqe
mov ecx, dword [rdx + rax*4 + 0x51b98]
add rcx, rdx
jmp rcx
mov dword [rbp - 0x68], 1
jmp 0x180050cbd
mov dword [rbp - 0x48], 1
jmp 0x180050cbd
mov dword [rbp - 0x44], 1
jmp 0x180050cbd
mov dword [rbp - 0x78], 1
jmp 0x180050cbd
mov dword [rbp - 0x70], 1
jmp 0x180050cbd
inc r9
cmp r9, rsi
jae case.0x180050c57.33
movzx eax, byte [r9]
imul eax, eax, 0x1010101
mov word [rbp + 0x3870], ax
movd xmm0, eax
pshufd xmm0, xmm0, 0
movups xmmword [rbp + 0x3840], xmm0
movups xmmword [rbp + 0x3850], xmm0
movups xmmword [rbp + 0x3860], xmm0
mov r14d, ebx
mov eax, 0x35
add eax, 0xc1
cmp eax, 0xf6
jb 0x180050c35
mov dword [rsp + 0x68], r14d
mov qword [rbp - 0x80], r9
test r14d, r14d
jne 0x180050cf2
mov rax, r9
inc r9
cmp rax, rsi
jb 0x180050c30
mov r14d, dword [rsp + 0x78]
mov r10d, ebx
mov qword [rbp - 0x80], r9
mov dword [rsp + 0x58], ebx
cmp r9, rsi
jae 0x180051b50
nop dword [rax + rax]
movsx edx, byte [r9]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180050c09
lea r10d, [r10 + r10*4]
inc r9
mov qword [rbp - 0x80], r9
lea r10d, [r10 - 0x18]
lea r10d, [rdx + r10*2]
mov dword [rsp + 0x58], r10d
cmp r9, rsi
jb 0x180050d10
mov r13d, r10d
jmp 0x180051b53
mov rsi, qword [rbp + 8]
cmp r9, rsi
jae 0x180050d62
nop dword [rax]
cmp byte [r9], 0x25
je 0x180050d5e
inc r9
cmp r9, rsi
jb 0x180050d50
mov qword [rbp - 0x80], r9
mov rax, qword [rbp + 0x28]
cmp rax, r9
jae 0x180050d8c
mov rcx, qword [rbp - 0x58]
mov r8d, r9d
mov r9, qword [rbp - 0x10]
sub r8d, eax
mov rdx, rax
call r11
cmp eax, 0xfffffff6
je 0x180050aed
mov r9, qword [rbp - 0x80]
cmp r9, rsi
jae 0x180050aed
mov dword [rbp - 0x70], ebx
mov dword [rbp - 0x78], ebx
mov dword [rbp - 0x44], ebx
mov dword [rbp - 0x48], ebx
mov dword [rbp - 0x68], ebx
jmp 0x180051b53
mov qword [rbp + 0x28], r9
jmp 0x180051b58
movsx eax, byte [r9]
mov dword [rsp + 0x68], eax
mov qword [rbp - 0x30], rbx
mov byte [rsp + 0x50], 9
jmp 0x180051b58
cmp r14d, 0x413
je 0x180051af4
cmp r14d, 0x4b6
je 0x180051b3d
cmp r14d, 0x559
je 0x180050f17
cmp r14d, 0x5fc
je 0x180050e89
cmp r14d, 0x69f
jne 0x180051b58
cmp dword [rbp - 0x68], 0
je 0x180051b58
mov esi, r13d
sub esi, dword [rsp + 0x54]
test esi, esi
jle 0x180051b53
cmp esi, 0x32
jl 0x180050e58
nop word [rax + rax]
mov r9, qword [rbp - 0x10]
lea rdx, [rbp + 0x3840]
mov rcx, qword [rbp - 0x58]
mov r8d, 0x32
call r11
test eax, eax
jne 0x180050e7d
mov r11, qword [rbp - 0x18]
sub esi, 0x32
cmp esi, 0x32
jge 0x180050e30
test esi, esi
jle 0x180051b53
mov r9, qword [rbp - 0x10]
lea rdx, [rbp + 0x3840]
mov rcx, qword [rbp - 0x58]
mov r8d, esi
call r11
test eax, eax
je 0x180051b53
mov dword [rbp - 0x50], 0xfffffff6
jmp 0x180050af0
cmp dword [rbp - 0x68], 0
jne 0x180050eea
mov esi, r13d
sub esi, dword [rsp + 0x54]
test esi, esi
jle 0x180050eea
cmp esi, 0x32
jl 0x180050ec8
nop
mov r9, qword [rbp - 0x10]
lea rdx, [rbp + 0x3840]
mov rcx, qword [rbp - 0x58]
mov r8d, 0x32
call r11
test eax, eax
jne 0x180050e7d
mov r11, qword [rbp - 0x18]
sub esi, 0x32
cmp esi, 0x32
jge 0x180050ea0
test esi, esi
jle 0x180050eea
mov r9, qword [rbp - 0x10]
lea rdx, [rbp + 0x3840]
mov r8d, esi
mov rsi, qword [rbp - 0x58]
mov rcx, rsi
call r11
test eax, eax
jne 0x180050e7d
jmp 0x180050eee
mov rsi, qword [rbp - 0x58]
mov eax, dword [rsp + 0x54]
test eax, eax
jle 0x180051b53
mov r9, qword [rbp - 0x10]
mov r8d, eax
mov rdx, rdi
mov rcx, rsi
call qword [rbp - 0x18]
test eax, eax
jne 0x180050e7d
jmp 0x180051b53
movzx r8d, byte [rsp + 0x50]
lea eax, [r8 - 1]
cmp eax, 7
ja case.0x180050f36.5
cdqe
mov ecx, dword [rdx + rax*4 + 0x51bdc]
add rcx, rdx
jmp rcx
mov byte [rbp + 0x3880], 0x25
mov r14d, 0x559
mov dword [rsp + 0x54], 1
jmp 0x180051b53
movsxd r11, dword [rsp + 0x5c]
mov esi, 0xc0
mov rcx, qword [rbp - 8]
lea r14, [rcx + r11*8]
mov eax, esi
sub eax, 0xc0
je 0x180050f87
sub eax, 1
je 0x180050f7d
cmp eax, 1
je 0x180051994
jmp 0x180050fd0
mov dword [rsp + 0x54], 1
jmp 0x180050fd0
cmp r11d, dword [r10]
jge 0x180050fc4
mov rcx, qword [r14]
inc r11d
add r14, 8
mov dword [rsp + 0x5c], r11d
test rcx, rcx
je 0x180050fc4
mov r9d, StrCmpICW
mov qword [rsp + 0x20], rbx
xor r8d, r8d
xor edx, edx
call fcn.180022030
mov r11d, dword [rsp + 0x5c]
mov r10, qword [rbp - 0x28]
mov dword [rsp + 0x68], eax
jmp 0x180050fca
mov eax, ebx
mov dword [rsp + 0x68], ebx
mov byte [rbp + 0x3880], al
inc esi
cmp esi, 0xc3
jb 0x180050f64
jmp 0x180050fe1
mov r11d, dword [rsp + 0x5c]
mov rcx, qword [rbp - 8]
mov esi, 0xec
movsxd rax, r11d
lea r14, [rcx + rax*8]
cmp esi, 0xec
je 0x18005104c
cmp esi, 0x6568
je 0x180051012
cmp esi, 0xc9e4
je 0x180051994
jmp 0x1800510b0
cmp dword [rbp - 0x70], 0
je 0x1800510b0
movdqa xmm0, xmmword [str.0000000000000000]
movabs rax, 0x3030303030303030
movups xmmword [rbp + 0x3840], xmm0
mov word [rbp + 0x3870], ax
movups xmmword [rbp + 0x3850], xmm0
movups xmmword [rbp + 0x3860], xmm0
jmp 0x1800510b0
cmp r11d, dword [r10]
jge 0x180051088
mov rax, qword [r14]
inc r11d
add r14, 8
mov dword [rsp + 0x5c], r11d
test rax, rax
je 0x180051088
xor r9d, r9d
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x54]
xor edx, edx
mov ecx, 0xac
call fcn.180093140
cmp dword [rsp + 0x54], 1
mov rdi, rax
jge 0x180051097
lea rdi, [0x18010713c]
mov dword [rsp + 0x54], 1
mov r11d, dword [rsp + 0x5c]
test r12d, r12d
js 0x1800510b0
mov eax, dword [rsp + 0x54]
cmp r12d, eax
cmovl eax, r12d
mov dword [rsp + 0x54], eax
mov r10, qword [rbp - 0x28]
add esi, 0x647c
cmp esi, 0x12d74
jbe 0x180050ff1
jmp 0x1800510cd
mov r11d, dword [rsp + 0x5c]
mov rcx, qword [rbp - 8]
mov esi, 5
movsxd rax, r11d
lea r14, [rcx + rax*8]
nop dword [rax]
cmp esi, 0x16d
ja 0x18005126b
je 0x180051259
mov eax, esi
sub eax, 5
je 0x18005121d
sub eax, 0x78
je 0x1800511f9
cmp eax, 0x78
jne 0x1800512f0
mov r9, qword [rbp - 0x30]
mov r10, qword [rbp - 0x38]
test byte [r9 + 4], 1
je 0x180051164
test r10, r10
jns 0x180051143
movabs rax, 0x7fffffffffffffff
neg r10
cmovs r10, rax
mov eax, 0x2d
mov dword [rsp + 0x6c], eax
mov qword [rbp - 0x38], r10
jmp 0x180051184
cmp dword [rbp - 0x48], 0
je 0x180051154
mov eax, 0x2b
mov dword [rsp + 0x6c], eax
jmp 0x180051184
mov eax, dword [rbp - 0x44]
neg eax
sbb eax, eax
and eax, 0x20
mov dword [rsp + 0x6c], eax
jmp 0x180051184
test r10, r10
jns 0x18005117e
neg r10
movabs rax, 0x7fffffffffffffff
cmovs r10, rax
mov qword [rbp - 0x38], r10
mov eax, ebx
mov dword [rsp + 0x6c], ebx
cmp dword [rbp - 0x70], 0
je 0x18005119e
neg eax
sbb ecx, ecx
lea eax, [rcx + r13]
cmp r12d, eax
cmovl r12d, eax
mov dword [rsp + 0x60], r12d
mov rbx, qword [rbp]
lea rdi, [rbp + 0x3c7f]
mov r8d, 0x79
nop
mov ecx, r8d
sub ecx, 0x79
je 0x1800511e1
cmp ecx, 1
jne 0x1800511e5
movzx ecx, byte [r9 + 1]
mov rax, r10
dec rdi
cqo
idiv rcx
mov r10, rax
movzx eax, byte [rbx + rdx]
mov byte [rdi], al
test r10, r10
jg 0x1800511c2
mov qword [rbp - 0x38], r10
jmp 0x1800511e5
mov rbx, qword [r9 + 0x10]
inc r8d
cmp r8d, 0x7b
jb 0x1800511b0
mov qword [rbp], rbx
xor ebx, ebx
jmp 0x1800512f0
mov eax, 0x3d8
cmp r12d, eax
cmovg r12d, eax
cmp qword [rbp - 0x38], 0
mov dword [rsp + 0x60], r12d
jne 0x1800512f0
mov dword [rbp - 0x78], ebx
jmp 0x1800512f0
cmp r11d, dword [r10]
jge 0x180051250
mov r8, qword [r14]
inc r11d
add r14, 8
mov dword [rsp + 0x5c], r11d
test r8, r8
je 0x180051250
mov edx, 0x2e
xor ecx, ecx
call fcn.1800437e0
mov r11d, dword [rsp + 0x5c]
mov qword [rbp - 0x38], rax
jmp 0x1800512f0
mov qword [rbp - 0x38], rbx
jmp 0x1800512f0
lea rax, [rbp + 0x3c7f]
sub eax, edi
mov dword [rsp + 0x54], eax
jmp 0x1800512f0
mov eax, esi
sub eax, 0x1e5
je 0x180051291
cmp eax, 0x78
jne 0x1800512f0
lea rax, [rbp + 0x3c7f]
mov r14d, 0x559
sub eax, edi
mov dword [rsp + 0x54], eax
jmp 0x180051b53
mov eax, r12d
sub eax, dword [rsp + 0x54]
test eax, eax
jle 0x1800512ac
nop dword [rax]
dec rdi
dec eax
mov byte [rdi], 0x30
test eax, eax
jg 0x1800512a0
mov eax, dword [rsp + 0x6c]
test eax, eax
je 0x1800512b9
dec rdi
mov byte [rdi], al
cmp dword [rbp - 0x78], 0
je 0x1800512f0
mov r9, qword [rbp - 0x30]
cmp qword [r9 + 0x18], 0
je 0x1800512f0
mov rax, qword [r9 + 0x18]
movzx ecx, byte [rax]
cmp byte [rdi], cl
je 0x1800512f0
test cl, cl
je 0x1800512f0
nop dword [rax]
dec rdi
lea rax, [rax + 1]
mov byte [rdi], cl
movzx ecx, byte [rax]
test cl, cl
jne 0x1800512e0
add esi, 0x78
cmp esi, 0x2d0
ja 0x18005130b
mov r10, qword [rbp - 0x28]
jmp 0x1800510e0
mov r11d, dword [rsp + 0x5c]
jmp 0x180051316
movzx r8d, byte [rsp + 0x50]
mov esi, 0x3d8
movsxd r10, dword [rsp + 0x58]
mov eax, 0xec
movsxd rdx, r11d
mov r13, r10
mov dword [rsp + 0x78], eax
mov qword [rbp + 0x10], r10
mov qword [rbp + 0x18], rdx
add eax, 0xffffff1d
cmp eax, 9
ja case.default.0x180051352
lea r9, [0x180000000]
mov ecx, dword [r9 + rax*4 + 0x51bfc]
add rcx, r9
jmp rcx
cmp r8b, 3
mov eax, ebx
sete al
mov dword [rbp + 0x20], eax
cmp r8b, 2
je 0x180051390
movaps xmm0, xmm11
addsd xmm0, xmm6
comisd xmm0, xmm7
movsd qword [rsp + 0x70], xmm0
movaps xmm6, xmm0
jb 0x180051390
mulsd xmm6, xmm10
inc r15d
mov dword [rsp + 0x64], r15d
movsd qword [rsp + 0x70], xmm6
cmp r8b, 4
jne 0x1800513cf
cmp dword [rbp - 0x78], 0
mov ecx, ebx
sete cl
mov dword [rbp - 0x40], ecx
cmp r15d, 0xfffffffc
jl 0x1800513c2
cmp r15d, r12d
jg 0x1800513c2
sub r12d, r15d
mov r8b, 2
mov dword [rsp + 0x60], r12d
mov byte [rsp + 0x50], r8b
jmp case.default.0x180051352
mov r8b, 3
mov byte [rsp + 0x50], r8b
jmp case.default.0x180051352
mov dword [rbp - 0x40], ebx
jmp case.default.0x180051352
lea rdi, [rbp + 0x3880]
jmp case.default.0x180051352
mov dword [rbp - 0x6c], ebx
cmp r8b, 2
jne 0x180051560
lea eax, [r15 + r12]
cmp eax, 0x3e2
jge 0x180051560
mov r13d, dword [rbp - 0x74]
mov esi, 0xed
nop dword [rax + rax]
mov eax, esi
sub eax, 0xed
je 0x180051526
sub eax, 0x4b
je 0x180051499
sub eax, 0x4b
je 0x18005148e
sub eax, 0x4b
je 0x18005143a
cmp eax, 0x4b
jne 0x180051547
jmp 0x180051544
cmp dword [rbp - 0x40], 0
je 0x180051547
test r13d, r13d
je 0x180051547
lea rax, [rbp + 0x3880]
cmp rdi, rax
jb 0x180051547
nop dword [rax]
cmp byte [rdi], 0x30
lea rax, [rbp + 0x3880]
jne 0x18005147c
mov byte [rdi], 0
dec rdi
cmp rdi, rax
jae 0x180051460
jmp 0x180051547
cmp rdi, rax
jb 0x180051547
cmp byte [rdi], 0x2e
jne 0x180051547
mov byte [rdi], 0
dec rdi
jmp 0x180051547
test r15d, r15d
jns 0x1800514b0
mov byte [rdi], 0x30
inc rdi
jmp 0x1800514cf
mov r8d, 0x5f
lea rdx, [rbp - 0x6c]
lea rcx, [rsp + 0x70]
call fcn.18002b4e0
mov byte [rdi], al
inc rdi
sub r15d, 1
jns 0x1800514b0
test r13d, r13d
je 0x1800514da
mov byte [rdi], 0x2e
inc rdi
add r15d, 1
jns 0x1800514f9
test r12d, r12d
jle 0x180051521
mov byte [rdi], 0x30
dec r12d
inc rdi
add r15d, 1
mov dword [rsp + 0x64], r15d
js 0x1800514e0
test r12d, r12d
jle 0x180051521
nop
mov r8d, 0x5f
lea rdx, [rbp - 0x6c]
lea rcx, [rsp + 0x70]
dec r12d
call fcn.18002b4e0
mov byte [rdi], al
inc rdi
test r12d, r12d
jg 0x180051500
dec r12d
jmp 0x180051547
test r12d, r12d
jg 0x180051534
cmp dword [rbp - 0x78], 0
mov r13d, ebx
je 0x18005153a
mov r13d, 1
mov eax, dword [rsp + 0x6c]
test eax, eax
je 0x180051547
mov byte [rdi], al
inc rdi
add esi, 0x4b
cmp esi, 0x264
jb 0x180051410
mov dword [rsp + 0x64], r15d
jmp 0x180051731
mov r13d, dword [rbp - 0x74]
mov esi, StrCmpNICW
nop dword [rax]
mov eax, esi
sub eax, 0x96
je 0x18005166a
sub eax, 1
je 0x180051619
sub eax, 1
je 0x1800515e2
cmp eax, 1
jne 0x180051723
test r12d, r12d
jg 0x1800515a2
cmp dword [rbp - 0x78], 0
mov r13d, ebx
je 0x1800515a8
mov r13d, 1
mov eax, dword [rsp + 0x6c]
test eax, eax
je 0x1800515b5
mov byte [rdi], al
inc rdi
mov r8d, 0x5f
lea rdx, [rbp - 0x6c]
lea rcx, [rsp + 0x70]
call fcn.18002b4e0
mov byte [rdi], al
inc rdi
test r13d, r13d
je 0x180051723
mov byte [rdi], 0x2e
inc rdi
jmp 0x180051723
test r12d, r12d
jle 0x180051611
nop word [rax + rax]
mov r8d, 0x5f
lea rdx, [rbp - 0x6c]
lea rcx, [rsp + 0x70]
dec r12d
call fcn.18002b4e0
mov byte [rdi], al
inc rdi
test r12d, r12d
jg 0x1800515f0
dec r12d
jmp 0x180051723
dec rdi
cmp dword [rbp - 0x40], 0
je 0x180051662
test r13d, r13d
je 0x180051662
lea rax, [rbp + 0x3880]
cmp rdi, rax
jb 0x180051662
cmp byte [rdi], 0x30
lea rax, [rbp + 0x3880]
jne 0x180051652
mov byte [rdi], 0
dec rdi
cmp rdi, rax
jae 0x180051633
inc rdi
jmp 0x180051723
cmp rdi, rax
jb 0x180051662
cmp byte [rdi], 0x2e
jne 0x180051662
mov byte [rdi], 0
dec rdi
inc rdi
jmp 0x180051723
test r15d, r15d
jne 0x180051679
cmp dword [rbp + 0x20], r15d
je 0x180051723
mov rbx, qword [rbp - 0x30]
mov r8d, 0x7d
mov eax, r8d
sub eax, 0x7d
je 0x1800516c2
cmp eax, 0xc
jne 0x18005170b
mov eax, 0x66666667
imul r15d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx ecx, dl
lea eax, [rdx + 0x30]
shl dl, 2
mov byte [rdi], al
add cl, dl
add cl, cl
movzx eax, r15b
sub al, cl
add al, 0x30
mov byte [rdi + 1], al
add rdi, 2
jmp 0x18005170b
mov rax, qword [rbx + 0x10]
movzx ecx, byte [rax]
mov byte [rdi], cl
test r15d, r15d
jns 0x1800516dd
mov byte [rdi + 1], 0x2d
add rdi, 2
neg r15d
jmp 0x1800516e5
mov byte [rdi + 1], 0x2b
add rdi, 2
cmp r15d, 0x64
jl 0x18005170b
mov eax, 0x51eb851f
imul r15d
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
mov byte [rdi], al
inc rdi
imul eax, edx, 0xffffff9c
add r15d, eax
add r8d, 0xc
cmp r8d, 0x95
jb 0x180051683
mov dword [rsp + 0x64], r15d
xor ebx, ebx
dec esi
cmp esi, 0x95
ja 0x180051570
movsd xmm6, qword [rsp + 0x70]
lea rcx, [rbp + 0x3880]
mov eax, edi
mov dword [rbp - 0x74], r13d
mov r13, qword [rbp + 0x10]
sub eax, ecx
mov dword [rsp + 0x54], eax
mov dword [rsp + 0x60], r12d
movzx r8d, byte [rsp + 0x50]
mov eax, dword [rsp + 0x78]
dec eax
mov dword [rsp + 0x78], eax
cmp eax, 0xe2
jbe 0x180051ad8
mov rdx, qword [rbp + 0x18]
mov esi, 0x3d8
mov r10d, dword [rsp + 0x58]
mov r11d, dword [rsp + 0x5c]
jmp 0x180051332
mov ecx, r12d
movaps xmm11, xmm14
cmp r12d, 8
jl 0x1800517de
lea eax, [r12 - 8]
shr eax, 3
inc eax
mov edx, eax
lea eax, [rax*8]
sub ecx, eax
nop dword [rax + rax]
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
mulsd xmm11, xmm10
sub rdx, 1
jne 0x1800517b0
test ecx, ecx
jle 0x1800517ed
dec ecx
mulsd xmm11, xmm10
test ecx, ecx
jg 0x1800517e2
mov rax, qword [rbp - 0x30]
cmp byte [rax + 8], 2
jne 0x180051802
addsd xmm6, xmm11
movsd qword [rsp + 0x70], xmm6
mov r15d, ebx
mov dword [rsp + 0x64], ebx
jmp case.default.0x180051352
cmp dword [rbp - 0x70], 0
je case.default.0x180051352
cmp dword [rbp - 0x68], 0
jne case.default.0x180051352
cmp dword [rsp + 0x54], r10d
jge case.default.0x180051352
mov r12d, dword [rsp + 0x6c]
mov r14d, 0xc5
mov r15d, dword [rbp - 0x60]
mov edx, dword [rbp - 0x20]
nop
mov eax, r14d
mov esi, edx
sub eax, 0xc4
je 0x180051893
cmp eax, 1
jne 0x1800518bb
mov edx, r10d
sub edx, dword [rsp + 0x54]
movsxd r8, edx
mov dword [rbp - 0x20], edx
cmp r13, r8
jl 0x180051887
mov rdx, r13
lea rcx, [rdi + r13]
sub rdx, r8
inc rdx
mov rax, rcx
sub rax, r8
movzx eax, byte [rax]
mov byte [rcx], al
dec rcx
sub rdx, 1
jne 0x180051870
mov edx, dword [rbp - 0x20]
test r12d, r12d
mov r15d, ebx
setne r15b
jmp 0x1800518bb
test edx, edx
je 0x1800518b1
mov r8d, edx
mov dl, 0x30
movsxd rcx, r15d
add rcx, rdi
call sub.VCRUNTIME140.dll_memset
mov r10d, dword [rsp + 0x58]
mov edx, ebx
add r15d, esi
dec edx
mov dword [rsp + 0x54], r10d
mov dword [rbp - 0x20], edx
dec r14d
cmp r14d, 0xc3
ja 0x180051840
mov r12d, dword [rsp + 0x60]
mov dword [rbp - 0x60], r15d
mov r15d, dword [rsp + 0x64]
jmp 0x180051753
comisd xmm6, xmm13
jbe case.default.0x180051352
mov ecx, 0xdd
nop
cmp ecx, 0xdd
je 0x1800519c9
cmp ecx, 0x165
je 0x18005199f
cmp ecx, 0x1ed
jne 0x1800519f4
comisd xmm9, xmm6
jbe 0x180051944
nop dword [rax + rax]
cmp r15d, 0xfffffea2
jl 0x18005193f
mulsd xmm6, xmm8
sub r15d, 8
comisd xmm9, xmm6
movsd qword [rsp + 0x70], xmm6
ja 0x180051920
mov dword [rsp + 0x64], r15d
comisd xmm12, xmm6
jbe 0x180051972
nop dword [rax + rax]
cmp r15d, 0xfffffea2
jl 0x18005196d
mulsd xmm6, xmm7
dec r15d
comisd xmm12, xmm6
movsd qword [rsp + 0x70], xmm6
ja 0x180051950
mov dword [rsp + 0x64], r15d
lea eax, [r15 + 0x15e]
cmp eax, 0x2bc
jbe 0x1800519f4
lea rdi, [0x18010b3e4]
mov dword [rsp + 0x54], 3
mov r13d, dword [rsp + 0x58]
mov r14d, 0x559
jmp 0x180051b53
comisd xmm6, xmm7
jb 0x1800519f4
cmp r15d, 0x15e
jg 0x1800519f4
mulsd xmm6, xmm10
inc r15d
mov dword [rsp + 0x64], r15d
comisd xmm6, xmm7
movsd qword [rsp + 0x70], xmm6
jae 0x1800519a5
jmp 0x1800519f4
comisd xmm6, xmm8
jb 0x1800519f4
cmp r15d, 0x15e
jg 0x1800519ef
mulsd xmm6, xmm9
add r15d, 8
comisd xmm6, xmm8
movsd qword [rsp + 0x70], xmm6
jae 0x1800519d0
mov dword [rsp + 0x64], r15d
add ecx, 0x88
cmp ecx, 0x275
jb 0x1800518f0
jmp case.default.0x180051352
mov rax, qword [rbp - 0x28]
cmp r11d, dword [rax]
jge 0x180051a4c
mov rax, qword [rbp - 8]
inc r11d
mov dword [rsp + 0x5c], r11d
mov r9, qword [rax + rdx*8]
inc rdx
mov qword [rbp + 0x18], rdx
test r9, r9
je 0x180051a4c
xor edx, edx
xor ecx, ecx
mov r8d, 0xf5
call fcn.18007acf0
mov qword [rsp + 0x70], rax
movsd xmm6, qword [rsp + 0x70]
jmp 0x180051a56
movaps xmm6, xmm13
movsd qword [rsp + 0x70], xmm6
test r12d, r12d
jns 0x180051753
mov r12d, 6
mov dword [rsp + 0x60], r12d
jmp 0x180051753
cmp r12d, esi
cmovg r12d, esi
comisd xmm13, xmm6
mov dword [rsp + 0x60], r12d
jbe 0x180051a96
xorps xmm6, xmm15
mov dword [rsp + 0x6c], 0x2d
movsd qword [rsp + 0x70], xmm6
jmp 0x180051ab4
cmp dword [rbp - 0x48], 0
je 0x180051aa6
mov dword [rsp + 0x6c], 0x2b
jmp 0x180051ab4
mov eax, dword [rbp - 0x44]
neg eax
sbb eax, eax
and eax, 0x20
mov dword [rsp + 0x6c], eax
mov rax, qword [rbp - 0x30]
cmp byte [rax + 8], 4
jne case.default.0x180051352
test r12d, r12d
jle case.default.0x180051352
dec r12d
mov dword [rsp + 0x60], r12d
jmp case.default.0x180051352
mov r13d, dword [rsp + 0x58]
mov byte [rbp + 0x3880], 0x3f
mov r14d, 0x559
mov dword [rsp + 0x54], 1
jmp 0x180051b53
mov r8d, dword [rsp + 0x68]
inc r9
mov qword [rbp - 0x80], r9
mov rdx, rbx
movsx eax, byte [rcx]
cmp r8d, eax
je 0x180051b20
inc rdx
lea rax, [0x180104320]
add rcx, 0x20
cmp rcx, rax
jl 0x180051b03
jmp 0x180051b58
mov rax, rdx
lea rcx, [0x180104140]
shl rax, 5
add rax, rcx
mov qword [rbp - 0x30], rax
movzx eax, byte [rax + 8]
mov byte [rsp + 0x50], al
mov r14d, 0x4b6
mov dword [rsp + 0x54], ebx
lea rdi, [rbp + 0x3880]
jmp 0x180051b58
mov r13d, ebx
mov esi, 0x3d8
mov r9, qword [rbp - 0x80]
lea rdx, [0x180000000]
mov r10, qword [rbp - 0x28]
lea rcx, [0x180104140]
mov r11, qword [rbp - 0x18]
add r14d, 0xa3
mov dword [rsp + 0x78], r14d
mov r8d, 0x3f6
cmp r14d, 0x742
jb 0x180050a30
jmp 0x180050a0d