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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
movaps xmmword [rsp + 0x100], xmm15
movapd xmmword [rsp + 0xf0], xmm14
movaps xmmword [rsp + 0xe0], xmm13
movapd xmmword [rsp + 0xd0], xmm12
movaps xmmword [rsp + 0xc0], xmm11
movaps xmmword [rsp + 0xb0], xmm10
movapd xmmword [rsp + 0xa0], xmm9
movaps xmmword [rsp + 0x90], xmm8
movaps xmmword [rsp + 0x80], xmm7
movaps xmmword [rsp + 0x70], xmm6
push rdx
pop rsi
nop
lea r15, [rsp + 0x170]
mov qword [r15], r8
mov qword [r15 + 8], r9
mov qword [rsp + 0x68], r15
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
movsd xmm4, qword [section..rdata]
movsd xmm2, qword [0x180016008]
movapd xmm15, xmmword [0x180016010]
movsd xmm11, qword [0x180016020]
movsd xmm3, qword [0x180016028]
movsd xmm5, qword [0x180016030]
movsd xmm10, qword [0x180016038]
movsd xmm8, qword [0x180016040]
movsd xmm6, qword [0x180016050]
movsd xmm13, qword [0x180016058]
movsd xmm1, qword [0x180016070]
xor r9d, r9d
movsd xmm7, qword [0x180016088]
lea rdx, [rsi + 1]
mov r13d, 1
sub r13, r9
mov r10, r9
neg r10
mov rcx, r9
movzx r8d, byte [rsi]
or r8d, r8d
je 0x18000bf4e
cmp r8d, 0x25
je 0x18000a65b
push rcx
nop
pop rax
inc rax
je 0x18000a64a
mov byte [rcx + r14], r8b
inc rsi
inc rdx
dec r13
dec r10
mov rcx, rax
jmp 0x18000a62b
xor r12d, r12d
mov al, byte [rdx]
movsx r8d, al
cmp r8d, 0x20
je 0x18000a690
cmp r8d, 0x23
je 0x18000a698
cmp r8d, 0x2b
je 0x18000a6a0
mov r9d, 1
cmp r8d, 0x30
je 0x18000a6a6
cmp r8d, 0x2d
jne 0x18000a6ae
mov r9d, 2
jmp 0x18000a6a6
mov r9d, 8
jmp 0x18000a6a6
mov r9d, 0x10
jmp 0x18000a6a6
mov r9d, 4
or r12d, r9d
inc rdx
jmp 0x18000a65e
lea r8d, [rax - 0x30]
xor edi, edi
cmp r8b, 9
ja 0x18000a6da
lea r8d, [rax - 0x30]
cmp r8b, 9
ja 0x18000a703
imul r8d, edi, 0xa
movzx eax, al
lea edi, [rax + r8]
add edi, 0xffffffd0
mov al, byte [rdx + 1]
inc rdx
jmp 0x18000a6ba
cmp al, 0x2a
jne 0x18000a703
dec rdx
mov eax, dword [r15]
add r15, 8
mov r8d, r12d
or r8d, 2
mov edi, eax
neg edi
cmovs edi, eax
test eax, eax
cmovs r12d, r8d
mov al, byte [rdx + 2]
add rdx, 2
sub r8d, r8d
cmp al, 0x2e
jne 0x18000a762
or r12d, 0x400
lea rsi, [rdx + 1]
mov al, byte [rdx + 1]
lea r9d, [rax - 0x30]
cmp r9b, 9
ja 0x18000a744
xor r8d, r8d
lea edx, [rax - 0x30]
cmp dl, 9
ja 0x18000a765
imul edx, r8d, 0xa
movzx eax, al
lea r8d, [rax + rdx]
add r8d, 0xffffffd0
mov al, byte [rsi + 1]
inc rsi
jmp 0x18000a725
cmp al, 0x2a
jne 0x18000a765
mov r8d, dword [r15]
add r15, 8
test r8d, r8d
mov eax, 0
cmovle r8d, eax
mov al, byte [rdx + 2]
add rdx, 2
push rdx
nop
pop rsi
movsx r9d, al
lea edx, [r9 - 0x68]
shrd edx, r9d, 1
cmp edx, 9
ja case.0x18000a785.3
lea r9, [0x180017068]
movsxd rdx, dword [r9 + rdx*4]
add rdx, r9
jmp rdx
mov edx, 1
mov eax, 0x200
or r12d, eax
mov al, byte [rsi + rdx]
add rsi, rdx
movsx r9d, al
lea r11d, [r9 - 0x62]
mov edx, r8d
mov qword [rsp + 0x58], rdx
movzx edx, al
cmp r11d, 0x16
ja case.default.0x18000a7c1
lea rbx, [0x180017090]
movsxd r9, dword [rbx + r11*4]
add r9, rbx
jmp r9
mov r11d, 0x10
cmp al, 0x58
je 0x18000acc6
cmp edx, 0x78
je 0x18000acc6
cmp edx, 0x6f
je 0x18000acb4
cmp edx, 0x62
jne 0x18000acbc
mov r11d, 2
jmp 0x18000acdc
cmp r9d, 0x25
je 0x18000b04b
cmp r9d, 0x45
je case.0x18000a7c1.101
cmp r9d, 0x46
je case.0x18000a7c1.102
cmp r9d, 0x47
je case.0x18000a7c1.101
cmp r9d, 0x58
je case.0x18000a7c1.98
mov r9, rcx
inc r9
je 0x18000b6b9
mov byte [rcx + r14], al
jmp 0x18000b6b9
mov eax, edx
or eax, 0x20
cmp eax, 0x67
jne 0x18000a844
or r12d, 0x800
or edx, 2
cmp edx, 0x47
jne 0x18000a850
or r12d, 0x20
movsd xmm1, qword [r15]
add r15, 8
ucomisd xmm4, xmm1
ja 0x18000ac28
ucomisd xmm1, xmm1
jp 0x18000ac28
ucomisd xmm1, xmm2
ja 0x18000ac28
movsd xmm12, qword [0x180016048]
movapd xmm0, xmm1
movapd xmm14, xmm6
xorpd xmm0, xmm15
maxsd xmm0, xmm1
bt r12d, 0xa
mov eax, r8d
mov edx, 6
cmovae eax, edx
movq rdx, xmm0
mov r9, rdx
shr r9, 0x34
and r9d, 0x7ff
add r9d, 0xfffffc01
movabs r10, 0xfffffffffffff
and rdx, r10
movabs r10, 0x3ff0000000000000
or rdx, r10
cvtsi2sd xmm2, r9d
mulsd xmm2, xmm11
movapd xmm4, xmm5
addsd xmm2, xmm3
movq xmm3, rdx
movapd xmm5, xmm10
movapd xmm10, xmm4
addsd xmm3, xmm4
mulsd xmm3, xmm5
addsd xmm3, xmm2
cvttpd2dq xmm2, xmm3
cvtdq2pd xmm4, xmm2
movapd xmm2, xmm4
mulsd xmm2, xmm8
addsd xmm2, xmm12
cvttsd2si edx, xmm2
cvttpd2dq xmm2, xmm2
cvtdq2pd xmm2, xmm2
mulsd xmm2, xmm6
mulsd xmm4, qword [0x180016058]
addsd xmm4, xmm2
movapd xmm5, xmm4
mulsd xmm5, xmm4
movapd xmm9, xmm5
divsd xmm9, qword [0x180016068]
movsd xmm6, qword [0x180016070]
addsd xmm9, xmm6
movapd xmm2, xmm5
divsd xmm2, xmm9
addsd xmm2, qword [0x180016078]
divsd xmm5, xmm2
movsd xmm2, qword [0x180016060]
subsd xmm2, xmm4
addsd xmm5, xmm2
add edx, 0x3ff
shl rdx, 0x34
addsd xmm4, xmm4
divsd xmm4, xmm5
addsd xmm4, qword [0x180016080]
movq xmm2, rdx
mulsd xmm2, xmm4
xor edx, edx
ucomisd xmm2, xmm0
seta r9b
mov rbx, r15
jbe 0x18000a9b3
divsd xmm2, xmm6
cvttsd2si r15d, xmm3
mov dl, r9b
sub r15d, edx
lea edx, [r15 + 0x63]
cmp edx, 0xc7
mov ebp, 5
sbb ebp, 0
bt r12d, 0xb
jae 0x18000aa12
ucomisd xmm0, qword [0x180016088]
jb 0x18000b604
movsd xmm3, qword [0x180016090]
ucomisd xmm3, xmm0
jbe 0x18000b604
mov edx, r15d
not edx
add edx, eax
sub ebp, ebp
cmp eax, r15d
cmovle edx, ebp
or r12d, 0x400
mov eax, edx
xor r15d, r15d
movapd xmm9, xmm10
movsd xmm12, qword [0x180016038]
movsd xmm10, qword [0x180016040]
movsd xmm6, qword [section..rdata]
movapd xmm15, xmmword [0x180016010]
movsd xmm14, qword [0x180016050]
movsd xmm13, qword [0x180016058]
movsd xmm3, qword [0x180016080]
xorpd xmm4, xmm4
mov edx, edi
sub edx, ebp
mov r8d, 0
cmovb edx, r8d
or ebp, ebp
mov r9d, edx
cmovne r9d, r8d
test r12b, 2
cmove r9d, edx
test r15d, r15d
je 0x18000aa80
movapd xmm3, xmm2
divsd xmm0, xmm3
cmpltsd xmm1, xmm4
movapd xmm2, xmm1
andnpd xmm2, xmm0
xorpd xmm0, xmm15
andpd xmm0, xmm1
orpd xmm0, xmm2
mov edx, r12d
and edx, 0xfffff7ff
mov dword [rsp + 0x20], edx
movapd xmm1, xmm0
mov r8d, eax
call fcn.18000bfcb
mov r9, rax
or ebp, ebp
movsd xmm11, qword [0x180016020]
movapd xmm5, xmm9
movapd xmm8, xmm10
je 0x18000b061
cmp r9, 0xffffffffffffffff
movsd xmm1, qword [0x180016070]
mov r11d, 0xa
movsd xmm3, qword [0x180016028]
movsd xmm2, qword [0x180016008]
movapd xmm4, xmm6
je 0x18000ab0d
test r12b, 0x20
sete al
shl al, 5
or al, 0x45
mov byte [r9 + r14], al
mov ecx, r15d
neg ecx
cmovs ecx, r15d
sub r8d, r8d
movsd xmm7, qword [0x180016088]
movapd xmm6, xmm14
movapd xmm10, xmm12
mov eax, ecx
xor edx, edx
div r11d
mov r10, r8
or dl, 0x30
mov byte [rsp + r8 + 0x30], dl
inc r8
cmp r10, 0x1e
ja 0x18000ab4d
cmp ecx, 9
mov ecx, eax
ja 0x18000ab2b
add ebp, 0xfffffffe
cmp ebp, 0x20
mov eax, 0x20
cmovae ebp, eax
cmp r8, rbp
jae 0x18000ad95
mov byte [rsp + r8 + 0x30], 0x30
inc r8
jmp 0x18000ab5b
mov al, byte [rsi + 1]
cmp al, 0x68
jne 0x18000ac9c
mov edx, 2
mov eax, 0xc0
jmp 0x18000a791
mov al, byte [rsi + 1]
cmp al, 0x6c
jne 0x18000aca5
mov edx, 2
mov eax, 0x300
jmp 0x18000a791
mov edx, r12d
or edx, 0x20
cmp al, 0x46
cmovne edx, r12d
movaps xmm15, xmm7
movapd xmm9, xmm1
movsd xmm1, qword [r15]
add r15, 8
mov dword [rsp + 0x20], edx
mov r9d, edi
movapd xmm14, xmm8
movapd xmm8, xmm5
movapd xmm7, xmm6
movapd xmm6, xmm3
movapd xmm12, xmm2
movapd xmm11, xmm4
call fcn.18000bfcb
movapd xmm4, xmm11
movapd xmm2, xmm12
movapd xmm3, xmm6
movapd xmm6, xmm7
movapd xmm5, xmm8
movapd xmm8, xmm14
movapd xmm1, xmm9
movaps xmm7, xmm15
movapd xmm15, xmmword [0x180016010]
movsd xmm11, qword [0x180016020]
mov r9, rax
jmp 0x18000b6b9
mov dword [rsp + 0x20], r12d
mov r9d, edi
movapd xmm14, xmm8
movapd xmm8, xmm5
movapd xmm12, xmm10
movapd xmm10, xmm6
movapd xmm6, xmm3
movapd xmm9, xmm11
movapd xmm11, xmm2
movapd xmm13, xmm4
call fcn.18000bfcb
movapd xmm4, xmm13
movapd xmm2, xmm11
movapd xmm11, xmm9
movapd xmm3, xmm6
movapd xmm6, xmm10
movapd xmm10, xmm12
movapd xmm5, xmm8
movapd xmm8, xmm14
mov r9, rax
movsd xmm1, qword [0x180016070]
movsd xmm13, qword [0x180016058]
jmp 0x18000b6b9
or r12d, 0x80
jmp 0x18000acac
or r12d, 0x100
inc rsi
jmp case.0x18000a785.3
mov r11d, 8
jmp 0x18000acdc
and r12d, 0xffffffef
mov r11d, 0xa
mov r9d, r12d
or r12d, 0x20
cmp al, 0x58
cmovne r12d, r9d
cmp al, 0x64
je 0x18000ace0
cmp edx, 0x69
je 0x18000ace0
and r12d, 0xfffffff3
mov r13d, r12d
and r13d, 0xfffffffe
bt r12d, 0xa
cmovae r13d, r12d
mov ebp, r11d
cmp al, 0x69
mov qword [rsp + 0x28], r15
je 0x18000ad01
cmp edx, 0x64
jne 0x18000ad31
bt r13d, 9
jb 0x18000ad64
bt r13d, 8
jb 0x18000ae0f
test r13b, 0x40
jne 0x18000b09c
mov edx, dword [r15]
test r13b, r13b
jns 0x18000b0a0
movsx edx, dx
jmp 0x18000b0a0
bt r13d, 9
jb 0x18000ae3c
bt r13d, 8
jb 0x18000b0cd
test r13b, 0x40
jne 0x18000b6fd
test r13b, r13b
mov eax, dword [r15]
movzx r9d, ax
cmovns r9d, eax
jmp 0x18000b701
mov rdx, qword [r15]
mov r15d, r13d
and r15d, 0xffffffef
test rdx, rdx
cmovne r15d, r13d
mov qword [rsp + 0x60], rdx
jne 0x18000ae69
mov eax, r15d
and eax, 0x400
je 0x18000ae69
sub ebx, ebx
jmp 0x18000aec3
cmp r8, 0x1f
ja 0x18000adae
shr r15d, 0x1f
add r15b, r15b
add r15b, 0x2b
mov byte [rsp + r8 + 0x30], r15b
inc r8
mov r15, rbx
lea rbp, [rsp + 0x2f]
lea rax, [r8 + rbp]
neg r8
add r13, r9
inc r9
xor ecx, ecx
cmp r8, rcx
je 0x18000ade5
mov rdx, r9
inc rdx
je 0x18000adda
mov r10b, byte [rax + rcx]
mov byte [r9 + r14], r10b
dec rcx
inc r13
mov r9, rdx
jmp 0x18000adc5
test r12b, 2
je 0x18000b6b9
mov eax, edi
cmp r13, rax
jae 0x18000b6b9
mov rcx, r9
inc rcx
je 0x18000ae07
mov byte [r9 + r14], 0x20
inc r13
mov r9, rcx
jmp 0x18000adf1
mov r15d, dword [r15]
mov r12d, r13d
and r12d, 0xffffffef
test r15d, r15d
cmovne r12d, r13d
jne 0x18000b0fa
mov eax, r12d
and eax, 0x400
je 0x18000b0fa
xor r13d, r13d
jmp 0x18000b156
mov r9, qword [r15]
mov r12d, r13d
and r12d, 0xffffffef
test r9, r9
cmovne r12d, r13d
jne 0x18000b197
mov eax, r12d
and eax, 0x400
je 0x18000b197
xor r13d, r13d
jmp 0x18000b1ec
mov r9, rdx
neg r9
cmovs r9, rdx
mov r12d, r15d
and r12d, 0x20
xor r12d, 0x61
add r12d, 0xf6
sub ebx, ebx
mov rax, r9
xor edx, edx
div rbp
mov r13, rbx
mov ebx, edx
and ebx, 0xfe
cmp ebx, 0xa
mov ebx, r12d
mov r14d, 0x30
cmovb ebx, r14d
add ebx, edx
mov byte [rsp + r13 + 0x30], bl
lea rbx, [r13 + 1]
cmp r13, 0x1e
ja 0x18000aec3
cmp r9, rbp
mov r9, rax
jae 0x18000ae87
test r15b, 2
jne 0x18000af03
test edi, edi
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
je 0x18000b62a
test r15b, 1
je 0x18000b62c
cmp qword [rsp + 0x60], 0
sets al
test r15b, 0xc
setne dl
or dl, al
movzx eax, dl
sub edi, eax
jmp 0x18000b62c
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r15b, 0x10
je 0x18000b240
bt r15d, 0xa
jb 0x18000af4a
test rbx, rbx
je 0x18000af4a
cmp rbx, qword [rsp + 0x58]
je 0x18000af33
cmp rbx, rax
jne 0x18000af4a
lea rdx, [rbx - 1]
add rbx, 0xfffffffffffffffe
test rdx, rdx
cmove rbx, rdx
cmp r11d, 0x10
cmovne rbx, rdx
cmp r11d, 0x10
jne 0x18000b219
test r15b, 0x20
jne 0x18000af66
mov dl, 0x78
cmp rbx, 0x20
jb 0x18000b227
test r15b, 0x20
je 0x18000b22e
mov dl, 0x58
cmp rbx, 0x20
jb 0x18000b227
jmp 0x18000b22e
mov eax, 1
test r12b, 2
jne 0x18000b49d
cmp eax, edi
jae 0x18000b49b
nop
push rcx
pop rdx
inc rdx
je 0x18000afa5
mov byte [rcx + r14], 0x20
inc eax
nop
push rdx
pop rcx
jmp 0x18000af90
or r12d, 0x21
mov r9, qword [r15]
mov eax, r12d
and eax, 0xffffffef
test r9, r9
cmovne eax, r12d
jne 0x18000b4d6
mov edx, eax
and edx, 0x400
je 0x18000b4d6
sub edx, edx
jmp 0x18000b517
mov rax, qword [r15]
cmp r8d, 1
mov edx, 0
sbb rdx, rdx
or rdx, qword [rsp + 0x58]
mov r9, rax
sub rdx, 1
setb r10b
cmp byte [r9], 0
je 0x18000b00a
test r10b, r10b
jne 0x18000b00a
inc r9
jmp 0x18000aff2
sub r9d, eax
cmp r9d, r8d
mov edx, r8d
cmovb edx, r9d
bt r12d, 0xa
cmovae edx, r9d
test r12b, 2
jne 0x18000b549
mov r9d, edx
cmp r9d, edi
jae 0x18000b542
mov r10, rcx
inc r10
je 0x18000b043
mov byte [rcx + r14], 0x20
inc r9d
mov rcx, r10
jmp 0x18000b02d
mov r9, rcx
inc r9
je 0x18000b6b9
mov byte [rcx + r14], 0x25
jmp 0x18000b6b9
mov r15, rbx
lea rbp, [rsp + 0x2f]
movsd xmm1, qword [0x180016070]
movsd xmm7, qword [0x180016088]
movsd xmm3, qword [0x180016028]
movsd xmm2, qword [0x180016008]
movapd xmm4, xmm6
movapd xmm6, xmm14
movapd xmm10, xmm12
jmp 0x18000b6b9
movsx edx, byte [r15]
mov r12d, r13d
and r12d, 0xffffffef
test edx, edx
cmovne r12d, r13d
mov dword [rsp + 0x60], edx
jne 0x18000b273
mov eax, r12d
and eax, 0x400
je 0x18000b273
xor r13d, r13d
jmp 0x18000b2ce
mov r9d, dword [r15]
mov r12d, r13d
and r12d, 0xffffffef
or r9d, r9d
cmovne r12d, r13d
jne 0x18000b72b
mov eax, r12d
and eax, 0x400
je 0x18000b72b
xor r13d, r13d
jmp 0x18000b77c
mov r9d, r15d
neg r9d
cmovs r9d, r15d
mov ebp, r12d
and ebp, 0x20
xor ebp, 0x61
add ebp, 0xf6
xor r13d, r13d
mov eax, r9d
xor edx, edx
div r11d
mov rbx, r13
mov r13d, edx
and r13d, 0xfe
cmp r13d, 0xa
mov r13d, ebp
mov r14d, 0x30
cmovb r13d, r14d
add r13d, edx
mov byte [rsp + rbx + 0x30], r13b
lea r13, [rbx + 1]
cmp rbx, 0x1e
ja 0x18000b156
cmp r9d, r11d
mov r9d, eax
jae 0x18000b116
test r12b, 2
jne 0x18000b311
or edi, edi
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
je 0x18000baa8
test r12b, 1
je 0x18000baaa
test r15d, r15d
sets al
test r12b, 0xc
setne dl
or dl, al
movzx eax, dl
sub edi, eax
jmp 0x18000baaa
mov r15d, r12d
and r15d, 0x20
xor r15d, 0x61
add r15d, 0xf6
xor r13d, r13d
mov rax, r9
sub edx, edx
div rbp
mov rbx, r13
mov r13d, edx
and r13d, 0xfe
cmp r13d, 0xa
mov r13d, r15d
mov r14d, 0x30
cmovb r13d, r14d
add r13d, edx
mov byte [rsp + rbx + 0x30], r13b
lea r13, [rbx + 1]
cmp rbx, 0x1e
ja 0x18000b1ec
cmp r9, rbp
mov r9, rax
jae 0x18000b1ac
test r12b, 2
jne 0x18000b38f
test edi, edi
je 0x18000bb38
test r12b, 1
je 0x18000bb3a
mov eax, r12d
and eax, 0xc
cmp eax, 1
adc edi, 0xffffffff
jmp 0x18000bb3a
cmp r11d, 2
jne 0x18000b22e
mov dl, 0x62
cmp rbx, 0x1f
ja 0x18000b22e
mov byte [rsp + rbx + 0x30], dl
inc rbx
cmp rbx, 0x1f
ja 0x18000b679
mov byte [rsp + rbx + 0x30], 0x30
inc rbx
cmp rbx, 0x1f
ja 0x18000b679
cmp qword [rsp + 0x60], 0
js 0x18000b670
mov dl, 0x2b
test r15b, 4
jne 0x18000b672
mov dl, 0x20
test r15b, 8
jne 0x18000b672
jmp 0x18000b679
mov r9d, edx
neg r9d
cmovs r9d, edx
mov ebp, r12d
and ebp, 0x20
xor ebp, 0x61
add ebp, 0xf6
xor r13d, r13d
mov eax, r9d
xor edx, edx
div r11d
mov rbx, r13
mov r15d, edx
and r15d, 0xfe
cmp r15d, 0xa
mov r15d, ebp
mov r14d, 0x30
cmovb r15d, r14d
add r15d, edx
mov byte [rsp + r13 + 0x30], r15b
inc r13
cmp rbx, 0x1e
ja 0x18000b2ce
cmp r9d, r11d
mov r9d, eax
jae 0x18000b28f
test r12b, 2
jne 0x18000b412
test edi, edi
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
je 0x18000baf0
test r12b, 1
je 0x18000baf2
cmp dword [rsp + 0x60], 0
sets al
test r12b, 0xc
setne dl
or dl, al
movzx eax, dl
sub edi, eax
jmp 0x18000baf2
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r12b, 0x10
je 0x18000b7ce
bt r12d, 0xa
jb 0x18000b358
test r13, r13
je 0x18000b358
cmp r13, qword [rsp + 0x58]
je 0x18000b341
cmp r13, rax
jne 0x18000b358
lea rdx, [r13 - 1]
add r13, 0xfffffffffffffffe
or rdx, rdx
cmove r13, rdx
cmp r11d, 0x10
cmovne r13, rdx
cmp r11d, 0x10
jne 0x18000b7a9
test r12b, 0x20
jne 0x18000b374
mov dl, 0x78
cmp r13, 0x20
jb 0x18000b7b7
test r12b, 0x20
je 0x18000b7bf
mov dl, 0x58
cmp r13, 0x20
jb 0x18000b7b7
jmp 0x18000b7bf
mov r15, qword [rsp + 0x28]
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r12b, 0x10
je 0x18000b82e
bt r12d, 0xa
jb 0x18000b3db
or r13, r13
je 0x18000b3db
cmp r13, qword [rsp + 0x58]
je 0x18000b3c4
cmp r13, rax
jne 0x18000b3db
lea rdx, [r13 - 1]
add r13, 0xfffffffffffffffe
test rdx, rdx
cmove r13, rdx
cmp r11d, 0x10
cmovne r13, rdx
cmp r11d, 0x10
jne 0x18000b809
test r12b, 0x20
jne 0x18000b3f7
mov dl, 0x78
cmp r13, 0x20
jb 0x18000b817
test r12b, 0x20
je 0x18000b81f
mov dl, 0x58
cmp r13, 0x20
jb 0x18000b817
jmp 0x18000b81f
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r12b, 0x10
jne 0x18000b430
mov r15, qword [rsp + 0x28]
jmp 0x18000b8ea
bt r12d, 0xa
mov r15, qword [rsp + 0x28]
jb 0x18000b464
test r13, r13
je 0x18000b464
cmp r13, qword [rsp + 0x58]
je 0x18000b44d
cmp r13, rax
jne 0x18000b464
lea rdx, [r13 - 1]
add r13, 0xfffffffffffffffe
test rdx, rdx
cmove r13, rdx
cmp r11d, 0x10
cmovne r13, rdx
cmp r11d, 0x10
jne 0x18000b8c1
test r12b, 0x20
jne 0x18000b480
mov dl, 0x78
cmp r13, 0x20
jb 0x18000b8cf
test r12b, 0x20
je 0x18000b8d7
mov dl, 0x58
cmp r13, 0x20
jb 0x18000b8cf
jmp 0x18000b8d7
inc eax
mov r9, rcx
inc r9
je 0x18000b4ac
mov dl, byte [r15]
mov byte [rcx + r14], dl
add r15, 8
test r12b, 2
je 0x18000b6b9
cmp eax, edi
jae 0x18000b6b9
mov rcx, r9
inc rcx
je 0x18000b4cf
mov byte [r9 + r14], 0x20
inc eax
mov r9, rcx
jmp 0x18000b4ba
sub edx, edx
mov r10d, r9d
and r10d, 0xf
mov r11d, r9d
and r11d, 0xe
lea edi, [r10 + 0x37]
or r10d, 0x30
cmp r11d, 0xa
cmovae r10d, edi
mov r11, rdx
mov byte [rsp + rdx + 0x30], r10b
inc rdx
cmp r11, 0x1e
ja 0x18000b517
mov r10, r9
shr r10, 4
cmp r9, 0xf
mov r9, r10
ja 0x18000b4d8
mov r9d, 0x10
test al, 2
jne 0x18000b5c0
cmp r8d, 0x20
mov r9d, 0x20
cmovae r8d, r9d
cmp rdx, r8
jae 0x18000b59c
mov byte [rsp + rdx + 0x30], 0x30
inc rdx
jmp 0x18000b533
cmp edx, edi
cmovbe edx, edi
inc edx
add r15, 8
mov r9, rcx
mov r10b, byte [rax]
test r10b, r10b
je 0x18000b576
bt r12d, 0xa
jae 0x18000b565
sub r8d, 1
jb 0x18000b576
inc rax
mov rcx, r9
inc rcx
je 0x18000b54d
mov byte [r9 + r14], r10b
jmp 0x18000b54d
test r12b, 2
je 0x18000b6b9
cmp edx, edi
jae 0x18000b6b9
mov rax, r9
inc rax
je 0x18000b595
mov byte [r9 + r14], 0x20
inc edx
mov r9, rax
jmp 0x18000b580
mov r8d, eax
and r8d, 0xc
cmp r8d, 1
mov r9d, 0
adc r9d, 0xf
cmp rdx, r9
jae 0x18000b5c0
mov byte [rsp + rdx + 0x30], 0x30
inc rdx
jmp 0x18000b5b1
mov r8d, r9d
test al, 0x10
je 0x18000bed9
bt eax, 0xa
jb 0x18000beb7
or rdx, rdx
je 0x18000beb7
cmp rdx, qword [rsp + 0x58]
je 0x18000b5ee
cmp rdx, r8
jne 0x18000beb7
cmp rdx, 1
jne 0x18000beb3
mov byte [rsp + 0x30], 0x58
xor edx, edx
jmp 0x18000beca
movapd xmm9, xmm10
test eax, eax
je 0x18000bb91
dec r8d
bt r12d, 0xa
mov eax, 6
cmovae r8d, eax
mov eax, r8d
jmp 0x18000aa17
xor edi, edi
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp rbx, r8
jae 0x18000b648
mov byte [rsp + rbx + 0x30], 0x30
inc rbx
jmp 0x18000b639
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r15b, 1
je 0x18000af0f
cmp rbx, rax
jae 0x18000af0f
mov byte [rsp + rbx + 0x30], 0x30
inc rbx
jmp 0x18000b653
mov dl, 0x2d
mov byte [rsp + rbx + 0x30], dl
inc rbx
test r15b, 3
je 0x18000b6e0
add r10, rcx
push rbx
nop
pop rdx
sub rdx, 1
jb 0x18000b6a7
mov r8, rcx
inc r8
je 0x18000b69c
mov r9b, byte [rsp + rbx + 0x2f]
mov byte [rcx + r14], r9b
inc r10
nop
push rdx
pop rbx
mov rcx, r8
jmp 0x18000b685
test r15b, 2
jne 0x18000b6c1
mov r15, qword [rsp + 0x28]
mov r9, rcx
add r15, 8
inc rsi
jmp 0x18000a615
mov r15, qword [rsp + 0x28]
cmp r10, rax
jae 0x18000b6b2
mov rdx, rcx
inc rdx
je 0x18000b6d8
mov byte [rcx + r14], 0x20
inc r10
nop
push rdx
pop rcx
jmp 0x18000b6c6
nop
push rbx
pop rdx
cmp rdx, rax
jae 0x18000b67f
mov r8, rcx
inc r8
je 0x18000b6f5
mov byte [rcx + r14], 0x20
inc rdx
mov rcx, r8
jmp 0x18000b6e3
movzx r9d, byte [r15]
mov r12d, r13d
and r12d, 0xffffffef
test r9d, r9d
cmovne r12d, r13d
jne 0x18000b91c
mov eax, r12d
and eax, 0x400
je 0x18000b91c
xor r13d, r13d
jmp 0x18000b96d
mov ebp, r12d
and ebp, 0x20
xor ebp, 0x61
add ebp, 0xf6
xor r13d, r13d
mov eax, r9d
xor edx, edx
div r11d
mov rbx, r13
mov r15d, edx
and r15d, 0xfe
cmp r15d, 0xa
mov r15d, ebp
mov r14d, 0x30
cmovb r15d, r14d
add r15d, edx
mov byte [rsp + r13 + 0x30], r15b
inc r13
cmp rbx, 0x1e
ja 0x18000b77c
cmp r9d, r11d
mov r9d, eax
jae 0x18000b73d
test r12b, 2
jne 0x18000b996
or edi, edi
je 0x18000be0b
test r12b, 1
je 0x18000be0d
mov eax, r12d
and eax, 0xc
cmp eax, 1
adc edi, 0xffffffff
jmp 0x18000be0d
cmp r11d, 2
jne 0x18000b7bf
mov dl, 0x62
cmp r13, 0x1f
ja 0x18000b7bf
mov byte [rsp + r13 + 0x30], dl
inc r13
cmp r13, 0x1f
ja 0x18000b7ff
mov byte [rsp + r13 + 0x30], 0x30
inc r13
cmp r13, 0x1f
ja 0x18000b7ff
test r15d, r15d
js 0x18000bb98
mov dl, 0x2b
test r12b, 4
mov r15, qword [rsp + 0x28]
jne 0x18000bb9f
mov dl, 0x20
test r12b, 8
jne 0x18000bb9f
jmp 0x18000bba7
mov r15, qword [rsp + 0x28]
jmp 0x18000bba7
cmp r11d, 2
jne 0x18000b81f
mov dl, 0x62
cmp r13, 0x1f
ja 0x18000b81f
mov byte [rsp + r13 + 0x30], dl
inc r13
cmp r13, 0x1f
ja 0x18000b84c
mov byte [rsp + r13 + 0x30], 0x30
inc r13
cmp r13, 0x1f
ja 0x18000b84c
mov dl, 0x2b
test r12b, 4
jne 0x18000b844
mov dl, 0x20
test r12b, 8
je 0x18000b84c
mov byte [rsp + r13 + 0x30], dl
inc r13
test r12b, 3
jne 0x18000b88c
lea r8, [r10 - 1]
sub edx, edx
lea r9, [rdx + r13]
cmp r9, rax
jae 0x18000b874
cmp r8, rdx
je 0x18000b86f
lea r9, [rcx + rdx]
mov byte [r14 + r9], 0x20
inc rdx
jmp 0x18000b858
sub rdx, r10
push rdx
pop rcx
nop
jmp 0x18000b88c
mov rcx, r9
inc rcx
je 0x18000b88c
mov dl, byte [rsp + rdx + 0x2f]
mov byte [r9 + r14], dl
mov r9, rcx
mov rdx, r13
sub r13, 1
jae 0x18000b87c
test r12b, 2
je 0x18000b6b5
mov rcx, r9
lea rdx, [r10 + r9]
cmp rdx, rax
jae 0x18000b6b2
mov r9, rcx
inc r9
je 0x18000b8a2
mov byte [rcx + r14], 0x20
jmp 0x18000b8a2
cmp r11d, 2
jne 0x18000b8d7
mov dl, 0x62
cmp r13, 0x1f
ja 0x18000b8d7
mov byte [rsp + r13 + 0x30], dl
inc r13
cmp r13, 0x1f
ja 0x18000bc26
mov byte [rsp + r13 + 0x30], 0x30
inc r13
cmp r13, 0x1f
ja 0x18000bc26
cmp dword [rsp + 0x60], 0
js 0x18000bc1c
mov dl, 0x2b
test r12b, 4
jne 0x18000bc1e
mov dl, 0x20
test r12b, 8
jne 0x18000bc1e
jmp 0x18000bc26
mov ebp, r12d
and ebp, 0x20
xor ebp, 0x61
add ebp, 0xf6
xor r13d, r13d
mov eax, r9d
sub edx, edx
div r11d
mov rbx, r13
mov r15d, edx
and r15d, 0xfe
cmp r15d, 0xa
mov r15d, ebp
mov r14d, 0x30
cmovb r15d, r14d
add r15d, edx
mov byte [rsp + r13 + 0x30], r15b
inc r13
cmp rbx, 0x1e
ja 0x18000b96d
cmp r9d, r11d
mov r9d, eax
jae 0x18000b92e
test r12b, 2
jne 0x18000b9b4
test edi, edi
je 0x18000be5f
test r12b, 1
je 0x18000be61
mov eax, r12d
and eax, 0xc
cmp eax, 1
adc edi, 0xffffffff
jmp 0x18000be61
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r12b, 0x10
jne 0x18000b9d2
mov r15, qword [rsp + 0x28]
jmp 0x18000bcc0
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
mov eax, edi
test r12b, 0x10
jne 0x18000ba3d
mov r15, qword [rsp + 0x28]
jmp 0x18000bd78
bt r12d, 0xa
jb 0x18000ba01
or r13, r13
je 0x18000ba01
cmp r13, qword [rsp + 0x58]
je 0x18000b9ea
cmp r13, rax
jne 0x18000ba01
lea rdx, [r13 - 1]
add r13, 0xfffffffffffffffe
or rdx, rdx
cmove r13, rdx
cmp r11d, 0x10
cmovne r13, rdx
mov r15, qword [rsp + 0x28]
cmp r11d, 0x10
jne 0x18000bc9b
test r12b, 0x20
jne 0x18000ba22
mov dl, 0x78
cmp r13, 0x20
jb 0x18000bca9
test r12b, 0x20
je 0x18000bcb1
mov dl, 0x58
cmp r13, 0x20
jb 0x18000bca9
jmp 0x18000bcb1
bt r12d, 0xa
jb 0x18000ba6c
or r13, r13
je 0x18000ba6c
cmp r13, qword [rsp + 0x58]
je 0x18000ba55
cmp r13, rax
jne 0x18000ba6c
lea rdx, [r13 - 1]
add r13, 0xfffffffffffffffe
or rdx, rdx
cmove r13, rdx
cmp r11d, 0x10
cmovne r13, rdx
mov r15, qword [rsp + 0x28]
cmp r11d, 0x10
jne 0x18000bd53
test r12b, 0x20
jne 0x18000ba8d
mov dl, 0x78
cmp r13, 0x20
jb 0x18000bd61
test r12b, 0x20
je 0x18000bd69
mov dl, 0x58
cmp r13, 0x20
jb 0x18000bd61
jmp 0x18000bd69
xor edi, edi
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp r13, r8
jae 0x18000bac7
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000bab7
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r12b, 1
je 0x18000b31d
cmp r13, rax
jae 0x18000b31d
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000bad2
xor edi, edi
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp r13, r8
jae 0x18000bb0f
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000baff
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r12b, 1
je 0x18000b41e
cmp r13, rax
jae 0x18000b41e
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000bb1a
sub edi, edi
mov r15, qword [rsp + 0x28]
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp r13, r8
jae 0x18000bb68
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000bb58
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r12b, 1
je 0x18000b3a0
cmp r13, rax
jae 0x18000b3a0
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000bb73
sub eax, eax
jmp 0x18000aa17
mov dl, 0x2d
mov r15, qword [rsp + 0x28]
mov byte [rsp + r13 + 0x30], dl
inc r13
test r12b, 3
jne 0x18000bbe7
lea r8, [r10 - 1]
sub edx, edx
lea r9, [rdx + r13]
cmp r9, rax
jae 0x18000bbcf
cmp r8, rdx
je 0x18000bbca
lea r9, [rcx + rdx]
mov byte [r14 + r9], 0x20
inc rdx
jmp 0x18000bbb3
sub rdx, r10
nop
push rdx
pop rcx
jmp 0x18000bbe7
mov rcx, r9
inc rcx
je 0x18000bbe7
mov dl, byte [rsp + rdx + 0x2f]
mov byte [r9 + r14], dl
mov r9, rcx
mov rdx, r13
sub r13, 1
jae 0x18000bbd7
test r12b, 2
je 0x18000b6b5
mov rcx, r9
lea rdx, [r10 + r9]
cmp rdx, rax
jae 0x18000b6b2
mov r9, rcx
inc r9
je 0x18000bbfd
mov byte [rcx + r14], 0x20
jmp 0x18000bbfd
mov dl, 0x2d
mov byte [rsp + r13 + 0x30], dl
inc r13
test r12b, 3
jne 0x18000bc66
lea r8, [r10 - 1]
sub edx, edx
lea r9, [rdx + r13]
cmp r9, rax
jae 0x18000bc4e
cmp r8, rdx
je 0x18000bc49
lea r9, [rcx + rdx]
mov byte [r14 + r9], 0x20
inc rdx
jmp 0x18000bc32
sub rdx, r10
push rdx
pop rcx
nop
jmp 0x18000bc66
mov rcx, r9
inc rcx
je 0x18000bc66
mov dl, byte [rsp + rdx + 0x2f]
mov byte [r9 + r14], dl
mov r9, rcx
mov rdx, r13
sub r13, 1
jae 0x18000bc56
test r12b, 2
je 0x18000b6b5
mov rcx, r9
lea rdx, [r10 + r9]
cmp rdx, rax
jae 0x18000b6b2
mov r9, rcx
inc r9
je 0x18000bc7c
mov byte [rcx + r14], 0x20
jmp 0x18000bc7c
cmp r11d, 2
jne 0x18000bcb1
mov dl, 0x62
cmp r13, 0x1f
ja 0x18000bcb1
mov byte [rsp + r13 + 0x30], dl
inc r13
cmp r13, 0x1f
ja 0x18000bcde
mov byte [rsp + r13 + 0x30], 0x30
inc r13
cmp r13, 0x1f
ja 0x18000bcde
mov dl, 0x2b
test r12b, 4
jne 0x18000bcd6
mov dl, 0x20
test r12b, 8
je 0x18000bcde
mov byte [rsp + r13 + 0x30], dl
inc r13
test r12b, 3
jne 0x18000bd1e
lea r8, [r10 - 1]
xor edx, edx
lea r9, [rdx + r13]
cmp r9, rax
jae 0x18000bd06
cmp r8, rdx
je 0x18000bd01
lea r9, [rcx + rdx]
mov byte [r14 + r9], 0x20
inc rdx
jmp 0x18000bcea
sub rdx, r10
push rdx
nop
pop rcx
jmp 0x18000bd1e
mov rcx, r9
inc rcx
je 0x18000bd1e
mov dl, byte [rsp + rdx + 0x2f]
mov byte [r9 + r14], dl
mov r9, rcx
mov rdx, r13
sub r13, 1
jae 0x18000bd0e
test r12b, 2
je 0x18000b6b5
mov rcx, r9
lea rdx, [r10 + r9]
cmp rdx, rax
jae 0x18000b6b2
mov r9, rcx
inc r9
je 0x18000bd34
mov byte [rcx + r14], 0x20
jmp 0x18000bd34
cmp r11d, 2
jne 0x18000bd69
mov dl, 0x62
cmp r13, 0x1f
ja 0x18000bd69
mov byte [rsp + r13 + 0x30], dl
inc r13
cmp r13, 0x1f
ja 0x18000bd96
mov byte [rsp + r13 + 0x30], 0x30
inc r13
cmp r13, 0x1f
ja 0x18000bd96
mov dl, 0x2b
test r12b, 4
jne 0x18000bd8e
mov dl, 0x20
test r12b, 8
je 0x18000bd96
mov byte [rsp + r13 + 0x30], dl
inc r13
test r12b, 3
jne 0x18000bdd6
lea r8, [r10 - 1]
sub edx, edx
lea r9, [rdx + r13]
cmp r9, rax
jae 0x18000bdbe
cmp r8, rdx
je 0x18000bdb9
lea r9, [rcx + rdx]
mov byte [r14 + r9], 0x20
inc rdx
jmp 0x18000bda2
sub rdx, r10
push rdx
pop rcx
nop
jmp 0x18000bdd6
mov rcx, r9
inc rcx
je 0x18000bdd6
mov dl, byte [rsp + rdx + 0x2f]
mov byte [r9 + r14], dl
mov r9, rcx
mov rdx, r13
sub r13, 1
jae 0x18000bdc6
test r12b, 2
je 0x18000b6b5
mov rcx, r9
lea rdx, [r10 + r9]
cmp rdx, rax
jae 0x18000b6b2
mov r9, rcx
inc r9
je 0x18000bdec
mov byte [rcx + r14], 0x20
jmp 0x18000bdec
xor edi, edi
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp r13, r8
jae 0x18000be36
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000be26
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r12b, 1
je 0x18000b9a2
cmp r13, rax
jae 0x18000b9a2
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000be41
xor edi, edi
lea rbp, [rsp + 0x2f]
lea r14, [0x180078980]
cmp r8d, 0x20
mov eax, 0x20
cmovae r8d, eax
cmp r13, r8
jae 0x18000be8a
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000be7a
cmp edi, 0x20
mov eax, 0x20
cmovb eax, edi
test r12b, 1
je 0x18000b9c0
cmp r13, rax
jae 0x18000b9c0
mov byte [rsp + r13 + 0x30], 0x30
inc r13
jmp 0x18000be95
add rdx, 0xfffffffffffffffe
cmp rdx, 0x1f
ja 0x18000bef5
mov byte [rsp + rdx + 0x30], 0x58
mov r9d, 0x20
je 0x18000bef8
lea r9, [rsp + 0x30]
mov byte [rdx + r9 + 1], 0x30
add rdx, 2
cmp rdx, 0x1f
ja 0x18000bef5
mov r9b, 0x2b
test al, 4
jne 0x18000beed
mov r9b, 0x20
test al, 8
je 0x18000bef5
mov byte [rsp + rdx + 0x30], r9b
inc rdx
mov r9, rdx
add r15, 8
lea r10, [r9 + rbp]
neg r9
xor edx, edx
xor r11d, r11d
cmp r9, r11
je 0x18000bf28
nop
push rcx
pop rdi
inc rdi
je 0x18000bf1d
mov bl, byte [r10 + r11]
mov byte [rcx + r14], bl
dec r11
inc rdx
push rdi
nop
pop rcx
jmp 0x18000bf08
test al, 2
jne 0x18000bf34
mov r9, rcx
jmp 0x18000b6b9
cmp rdx, r8
jae 0x18000bf2c
mov rax, rcx
inc rax
je 0x18000bf46
mov byte [rcx + r14], 0x20
inc rdx
push rax
nop
pop rcx
jmp 0x18000bf34
cmp rcx, 0xfffffffffffffffe
mov rax, 0xfffffffffffffffe
cmovb rax, rcx
mov byte [rax + r14], 0
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x80]
movaps xmm8, xmmword [rsp + 0x90]
movaps xmm9, xmmword [rsp + 0xa0]
movaps xmm10, xmmword [rsp + 0xb0]
movaps xmm11, xmmword [rsp + 0xc0]
movaps xmm12, xmmword [rsp + 0xd0]
movaps xmm13, xmmword [rsp + 0xe0]
movaps xmm14, xmmword [rsp + 0xf0]
movaps xmm15, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret