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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xf8
mov rsi, rcx
xor r12d, r12d
xor ecx, ecx
movaps xmmword [rax - 0x58], xmm6
xor r15d, r15d
test byte [rsi + 0x1d], 2
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm13
mov r9, r8
mov rdi, rdx
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x40], r12
je 0x140014f9b
mov r12, qword [r9]
add r9, 8
mov byte [rsp + 0x20], 1
mov qword [rsp + 0x40], r12
mov qword [rax + 0x18], r9
jmp 0x140014f9f
mov byte [rsp + 0x20], cl
movsx eax, byte [rdx]
test eax, eax
je 0x1400160ff
movsd xmm13, qword [0x1401147a0]
movsd xmm7, qword [0x1401147e0]
cmp eax, 0x25
je 0x140014ff2
mov r15, rdi
inc rdi
mov al, byte [rdi]
test al, al
je 0x140014fd0
cmp al, 0x25
jne 0x140014fc3
mov r8d, edi
mov rdx, r15
mov rcx, rsi
sub r8d, r15d
call fcn.1400162e4
cmp byte [rdi], 0
je 0x1400160ff
mov r9, qword [rsp + 0x150]
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x1400160ea
and dword [rsp + 0x28], 0
xor sil, sil
xor r13b, r13b
xor bpl, bpl
xor bl, bl
mov byte [rsp + 0x24], 0
mov byte [rsp + 0x22], sil
mov byte [rsp + 0x30], r13b
mov byte [rsp + 0x21], sil
mov byte [rsp + 0x158], sil
or r14d, 0xffffffff
cmp ecx, 0x2c
jg 0x140015125
je 0x14001511d
mov edx, ecx
sub edx, 0x20
je 0x140015113
sub edx, 1
je 0x140015106
sub edx, 2
je 0x1400150f9
sub edx, 7
je 0x14001507c
cmp edx, 1
jne 0x14001528a
mov byte [rsp + 0x21], 0x2b
jmp 0x140015249
cmp byte [rsp + 0x20], 0
je 0x14001509d
mov rcx, r12
call fcn.140014e98
mov r9, qword [rsp + 0x150]
mov rdx, rax
mov qword [rsp + 0x28], rax
jmp 0x1400150b1
mov edx, dword [r9]
add r9, 8
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x150], r9
test edx, edx
jns 0x1400150d0
xor eax, eax
mov ecx, edx
mov byte [rsp + 0x158], 1
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [rsp + 0x28], eax
lea rcx, [rdi + 1]
movsx eax, byte [rcx]
cmp eax, 0x2e
je 0x140015249
cmp eax, 0x6c
je 0x140015249
mov qword [rsp + 0x148], rcx
movsx ecx, byte [rcx]
jmp 0x14001528a
mov r13b, 1
mov byte [rsp + 0x30], r13b
jmp 0x140015249
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140015249
mov byte [rsp + 0x21], Ordinal_36
jmp 0x140015249
mov bpl, 0x2c
jmp 0x140015249
cmp ecx, 0x2d
je 0x140015241
cmp ecx, 0x2e
je 0x1400151a4
cmp ecx, 0x30
je 0x14001519a
jle 0x14001528a
cmp ecx, 0x39
jg 0x140015260
inc rdi
lea edx, [rcx - 0x30]
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x30
jl 0x14001517c
cmp ecx, 0x39
jg 0x140015174
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x14001515d
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x140015192
cmp ecx, 0x6c
jne 0x14001528a
dec rdi
jmp 0x140015249
mov byte [rsp + 0x24], 1
jmp 0x140015249
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
cmp ecx, 0x2a
jne 0x14001520f
cmp byte [rsp + 0x20], 0
je 0x1400151d3
mov rcx, r12
call fcn.140014e98
mov r9, qword [rsp + 0x150]
mov r14, rax
jmp 0x1400151e2
mov r14d, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r14d, r14d
jns 0x1400151fc
mov ecx, r14d
or eax, 0xffffffff
neg ecx
cmp r14d, 0x80000001
cmovge eax, ecx
mov r14d, eax
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
jmp 0x140015189
xor edx, edx
cmp ecx, 0x30
jl 0x140015235
cmp ecx, 0x39
jg 0x14001522d
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x140015216
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov r14d, edx
jmp 0x140015189
mov byte [rsp + 0x158], 1
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x14001528a
jmp 0x140015038
cmp ecx, 0x6c
jne 0x14001528a
inc rdi
mov bl, 1
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x6c
jne 0x14001528a
inc rdi
mov bl, 2
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
lea r11, [0x1400c8fb0]
xor edi, edi
mov r12b, 0x11
mov r8, r11
mov qword [rsp + 0x50], r11
mov rdx, r11
mov byte [rsp + 0x23], r12b
lea r10d, [rdi + 6]
movsx eax, byte [rdx]
cmp ecx, eax
je 0x1400152c5
lea rax, [0x1400c903a]
add rdx, r10
inc rdi
cmp rdx, rax
jl 0x1400152aa
jmp 0x1400152db
lea rax, [rdi + rdi*2]
lea r8, [r11 + rax*2]
mov qword [rsp + 0x50], r8
mov r12b, byte [r8 + 3]
mov byte [rsp + 0x23], r12b
movzx ecx, r12b
cmp ecx, 0xa
jg 0x140015b9f
cmp ecx, 9
jge 0x140015bd6
test r12b, r12b
je 0x140015d64
test ecx, ecx
jle 0x1400160ff
cmp ecx, 3
jle 0x1400156c3
cmp ecx, 4
je 0x140015688
jle 0x1400160ff
cmp ecx, r10d
jle 0x140015549
cmp ecx, 7
je 0x1400154d9
cmp ecx, 8
jne 0x1400160ff
cmp byte [rsp + 0x20], 0
je 0x1400153bb
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14001534d
xor ecx, ecx
jmp 0x140015365
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [rdi + 4], eax
call fcn.14002fb58
mov rcx, rax
mov edi, 1
mov rdx, rdi
test rcx, rcx
je 0x1400153b1
movsx eax, byte [rcx]
inc rcx
mov byte [rsp + 0x60], al
and eax, 0xc0
cmp al, 0xc0
jne 0x140015471
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x140015471
mov byte [rsp + rdx + 0x60], r8b
inc rdx
inc edi
inc rcx
cmp rdx, 4
jl 0x140015389
jmp 0x140015471
mov byte [rsp + 0x60], 0
jmp 0x140015471
mov ecx, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
cmp ecx, 0x80
jae 0x1400153e0
mov byte [rsp + 0x60], cl
mov edi, 1
jmp 0x140015471
mov eax, ecx
cmp ecx, 0x800
jae 0x140015406
shr eax, 6
and cl, 0x3f
mov edi, 2
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [rsp + 0x61], cl
mov byte [rsp + 0x60], al
jmp 0x140015471
cmp ecx, 0x10000
jae 0x140015437
shr eax, 0xc
mov edi, 3
and al, 0xf
sub al, 0x20
mov byte [rsp + 0x60], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [rsp + 0x62], cl
mov byte [rsp + 0x61], al
jmp 0x140015471
shr eax, 0x12
mov dl, 0x3f
mov r8b, 0x80
and al, 7
mov edi, 4
sub al, 0x10
mov byte [rsp + 0x60], al
mov eax, ecx
shr eax, 0xc
and al, dl
add al, r8b
mov byte [rsp + 0x61], al
mov eax, ecx
and cl, dl
shr eax, 6
and al, dl
add al, r8b
add cl, r8b
mov byte [rsp + 0x63], cl
mov byte [rsp + 0x62], al
cmp r14d, 1
jle 0x1400154cf
mov rcx, qword [rsp + 0x28]
mov r15, qword [rsp + 0x140]
mov eax, 1
sub eax, r14d
add ecx, eax
cmp ecx, 1
mov qword [rsp + 0x28], rcx
jle 0x1400154b5
cmp byte [rsp + 0x158], 0
jne 0x1400154b5
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r15
call fcn.140016248
and dword [rsp + 0x28], 0
lea ebx, [r14 - 1]
lea rdx, [rsp + 0x60]
mov r8d, edi
mov rcx, r15
call fcn.1400162e4
sub rbx, 1
jne 0x1400154b9
lea r15, [rsp + 0x60]
jmp 0x140015d2c
mov byte [rsp + 0x60], Ordinal_41
mov edi, 1
lea r15, [rsp + 0x60]
mov r13, qword [rsp + 0x28]
mov bl, byte [rsp + 0x158]
mov rsi, qword [rsp + 0x140]
sub r13d, edi
mov qword [rsp + 0x28], r13
test r13d, r13d
jle 0x14001609c
test bl, bl
jne 0x14001551f
mov r8b, 0x20
mov edx, r13d
mov rcx, rsi
call fcn.140016248
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.1400162e4
test bl, bl
je 0x1400160aa
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.140016248
jmp 0x1400160aa
cmp byte [rsp + 0x20], 0
je 0x140015585
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140015562
xor r15d, r15d
jmp 0x140015580
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [rdi + 4], eax
call fcn.14002fb58
mov r10d, 6
mov r15, rax
mov r12b, 5
jmp 0x140015594
mov r15, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r15, r15
jne 0x1400155a2
lea r15, [0x1400e2a9c]
jmp 0x14001560b
cmp r12b, r10b
jne 0x14001560b
mov rax, qword [rsp + 0x140]
cmp dword [rax + 0x18], 0
jne 0x140015603
cmp dword [rax + 0x14], 0
je 0x140015603
cmp dword [rsp + 0x28], 0
jne 0x140015603
test r14d, r14d
jns 0x140015603
cmp byte [rax + 0x1c], 0
jne 0x140015603
mov rcx, qword [rax]
mov rdx, r15
mov rsi, rax
mov qword [rax + 8], r15
call fcn.1400147d4
or rcx, 0xffffffffffffffff
mov dword [rsi + 0x10], eax
xor eax, eax
mov rdi, r15
repne scasb al, byte [rdi]
not rcx
dec rcx
btr ecx, 0x1f
or byte [rsi + 0x1d], 4
mov dword [rsi + 0x18], ecx
jmp 0x1400156b0
mov rax, r15
mov qword [rsp + 0x48], rax
test r14d, r14d
js 0x140015670
test sil, sil
je 0x140015641
mov rdi, r15
jmp 0x140015637
mov al, byte [rdi]
dec r14d
test al, al
je 0x14001563c
inc rdi
cmp al, 0xc0
jb 0x140015637
jmp 0x14001562f
inc rdi
mov al, byte [rdi]
and al, 0xc0
cmp al, 0x80
je 0x14001562c
test r14d, r14d
jg 0x14001561a
sub edi, r15d
jmp 0x140015666
xor edi, edi
xor eax, eax
movsxd rcx, r14d
test r14d, r14d
jle 0x1400154e8
cmp byte [rax + r15], 0
je 0x1400154e8
inc rax
inc edi
cmp rax, rcx
jl 0x140015651
mov r13b, byte [rsp + 0x22]
jmp 0x140015d23
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r15
repne scasb al, byte [rdi]
not rcx
lea rdi, [rcx - 1]
btr edi, 0x1f
jmp 0x140015666
cmp byte [rsp + 0x20], 0
mov rsi, qword [rsp + 0x140]
jne 0x1400156ab
mov rcx, qword [r9]
mov eax, dword [rsi + 0x18]
add r9, 8
mov dword [rcx], eax
mov qword [rsp + 0x150], r9
and dword [rsp + 0x28], 0
mov r13, qword [rsp + 0x28]
mov bl, byte [rsp + 0x158]
xor edi, edi
jmp 0x1400154fc
cmp byte [rsp + 0x20], 0
je 0x1400156f6
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x1400156dd
xorpd xmm6, xmm6
jmp 0x140015707
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.14002f168
movapd xmm6, xmm0
jmp 0x140015707
movsd xmm6, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r14d, r14d
mov ecx, 6
cmovs r14d, ecx
mov qword [rsp + 0x38], r14
comisd xmm6, xmmword [0x1401147d0]
jae 0x140015731
mov r8b, 0x2d
xorpd xmm6, xmm13
mov byte [rsp + 0x21], r8b
jmp 0x140015736
mov r8b, byte [rsp + 0x21]
cmp r12b, 3
jne 0x140015749
test r14d, r14d
jle 0x140015749
dec r14d
mov qword [rsp + 0x38], r14
mov eax, 0x66666667
mov edi, r14d
and edi, 0xfff
imul edi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, edi
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub eax, ecx
cmp edi, 0xa
movsxd rcx, eax
lea rax, [0x140000000]
movsd xmm2, qword [rax + rcx*8 + 0xc9040]
jl 0x14001579e
mov eax, 0xcccccccd
mul edi
shr edx, 3
mov eax, edx
sub rax, 1
mulsd xmm2, qword [0x1401148f8]
jne 0x140015790
cmp r12b, 1
jne 0x1400157ef
movsd qword [rsp + 0xb0], xmm6
mov rcx, qword [rsp + 0xb0]
mov eax, 0x55555556
shr rcx, 0x34
and ecx, 0x7ff
sub ecx, 0x3ff
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
add edx, r14d
cmp edx, 0xf
jge 0x1400157eb
movapd xmm0, xmm6
mulsd xmm0, qword [0x1401148f0]
addsd xmm2, xmm0
addsd xmm6, xmm2
movapd xmm0, xmm6
xor esi, esi
call fcn.140016f0c
test eax, eax
je 0x14001580d
lea r15, [0x1400e2a98]
lea edi, [rsi + 3]
jmp 0x1400154e8
comisd xmm6, xmmword [0x1401147d0]
jbe 0x1400158e2
comisd xmm6, xmmword [0x1401148e8]
movsd xmm1, qword [0x1401147d8]
mov ebp, 0x15e
jb 0x140015853
cmp esi, ebp
jg 0x140015853
mulsd xmm1, qword [0x1401148e8]
add esi, 0x64
movapd xmm0, xmm1
mulsd xmm0, qword [0x1401148e8]
comisd xmm6, xmm0
jae 0x140015832
movapd xmm0, xmm1
jmp 0x140015864
cmp esi, ebp
jg 0x140015872
movapd xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x1401148e0]
comisd xmm6, xmm0
jae 0x140015859
movapd xmm0, xmm1
jmp 0x140015882
cmp esi, ebp
jg 0x14001588c
movapd xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x140015878
divsd xmm6, xmm1
jmp 0x14001589d
mulsd xmm6, qword [0x1401148d8]
sub esi, 8
comisd xmm6, xmmword [0x1401148d0]
jb 0x140015892
jmp 0x1400158af
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x1401147d8]
jb 0x1400158a9
cmp esi, ebp
jle 0x1400158e2
xor eax, eax
test r8b, r8b
mov byte [rsp + 0x60], r8b
setne al
mov dword [rsp + rax + 0x60], 0x666e49
xor eax, eax
test r8b, r8b
setne al
lea edi, [rax + 3]
jmp 0x1400154e3
lea rbx, [rsp + 0x60]
cmp r12b, 1
je 0x140015901
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140015901
mulsd xmm6, qword [0x1401148c8]
inc esi
cmp r12b, 3
jne 0x1400159b9
test r13b, r13b
sete r13b
cmp esi, 0xfffffffc
jl 0x1400159b2
cmp esi, r14d
jg 0x1400159b2
sub r14d, esi
mov byte [rsp + 0x23], 1
mov qword [rsp + 0x38], r14
mov edi, esi
movsxd r14, dword [rsp + 0x28]
movsxd rcx, dword [rsp + 0x38]
xor eax, eax
test edi, edi
cmovg eax, edi
cdqe
add rax, r14
lea rdx, [rcx + rax + 0xf]
cmp rdx, 0x46
jle 0x140015972
mov rcx, qword [rsp + 0x140]
call fcn.140014ec8
mov qword [rsp + 0x48], rax
mov rbx, rax
test rax, rax
je 0x1400160ff
movzx r9d, byte [rsp + 0x22]
mov rax, qword [rsp + 0x38]
mov r8b, byte [rsp + 0x21]
test eax, eax
lea edx, [r9 + r9*4]
mov r15, rbx
setg r12b
lea ebp, [rdx + rdx + 0x10]
or r12b, r9b
or r12b, byte [rsp + 0x30]
test r8b, r8b
je 0x1400159a6
mov byte [rbx], r8b
inc rbx
test edi, edi
jns 0x1400159cf
mov byte [rbx], 0x30
inc rbx
jmp 0x1400159fe
mov byte [rsp + 0x23], 2
jmp 0x1400159c8
mov r13b, byte [rsp + 0x22]
cmp r12b, 2
jne 0x140015931
xor edi, edi
jmp 0x140015933
test ebp, ebp
jg 0x1400159d7
mov al, 0x30
jmp 0x1400159ef
cvttsd2si eax, xmm6
dec ebp
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rbx], al
inc rbx
sub edi, 1
jns 0x1400159cf
mov rax, qword [rsp + 0x38]
test r12b, r12b
je 0x140015a09
mov byte [rbx], 0x2e
inc rbx
add edi, 1
jns 0x140015a64
neg edi
mov dl, 0x30
mov rcx, rbx
mov r8, rdi
call sub.msvcrt.dll_memset
mov rax, qword [rsp + 0x38]
mov r8b, byte [rsp + 0x21]
mov r9b, byte [rsp + 0x22]
add rbx, rdi
sub eax, edi
jmp 0x140015a64
dec eax
mov qword [rsp + 0x38], rax
test ebp, ebp
jg 0x140015a42
mov al, 0x30
jmp 0x140015a5a
cvttsd2si eax, xmm6
dec ebp
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rbx], al
mov rax, qword [rsp + 0x38]
inc rbx
test eax, eax
jg 0x140015a33
test r13b, r13b
je 0x140015aa2
test r12b, r12b
je 0x140015aa2
lea rax, [rbx - 1]
jmp 0x140015a81
mov rbx, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x140015a78
lea rax, [rbx - 1]
cmp byte [rax], 0x2e
jne 0x140015aa2
test r9b, r9b
je 0x140015a9c
mov byte [rbx], 0x30
inc rbx
jmp 0x140015aa2
mov rbx, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x140015b28
mov r10, qword [rsp + 0x50]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [r10 + 4]
mov al, byte [rax + rcx]
mov byte [rbx], al
test esi, esi
jns 0x140015acf
mov byte [rbx + 1], 0x2d
add rbx, 2
neg esi
jmp 0x140015ad7
mov byte [rbx + 1], 0x2b
add rbx, 2
cmp esi, 0x64
jl 0x140015afa
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
imul edx, edx, 0xffffff9c
mov byte [rbx], al
inc rbx
add esi, edx
mov eax, 0x66666667
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
mov byte [rbx], al
mov al, dl
shl dl, 2
add al, dl
add al, al
sub sil, al
add sil, 0x30
add rbx, 2
mov byte [rbx - 1], sil
mov r13, qword [rsp + 0x28]
mov byte [rbx], 0
sub ebx, r15d
cmp byte [rsp + 0x24], 0
mov edi, ebx
mov bl, byte [rsp + 0x158]
je 0x1400154f4
test bl, bl
jne 0x1400154f4
cmp edi, r13d
jge 0x1400154f4
mov edx, r13d
sub edx, edi
movsxd rdi, edx
cmp r14, rdi
jl 0x140015b7b
mov rcx, r15
sub rcx, rdi
mov al, byte [r14 + rcx]
mov byte [r14 + r15], al
dec r14
cmp r14, rdi
jge 0x140015b6b
xor eax, eax
test r8b, r8b
setne al
movsxd rcx, eax
test edx, edx
je 0x140015b97
mov r8d, edx
add rcx, r15
mov dl, 0x30
call sub.msvcrt.dll_memset
mov edi, r13d
jmp 0x1400154f4
sub ecx, 0xb
je 0x140016060
sub ecx, 1
je 0x140015fe8
sub ecx, 1
je 0x140015d62
sub ecx, 1
je 0x140015bd6
sub ecx, 1
je 0x140015d64
sub ecx, 1
jne 0x1400160ff
jmp 0x140015d67
mov ebp, Ordinal_41
cmp r12b, 0xe
lea eax, [rbp - 5]
cmove ebp, eax
cmp byte [rsp + 0x20], 0
je 0x140015c17
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140015bfd
xor esi, esi
jmp 0x140015c26
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [rdi + 4], eax
call fcn.14002fb58
mov rsi, rax
jmp 0x140015c26
mov rsi, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
xor edx, edx
test rsi, rsi
sete dl
test edx, edx
je 0x140015c48
lea rax, [0x1400e2aa0]
lea rsi, [0x1400e2aa8]
cmp r12b, 0xa
cmove rsi, rax
mov r13b, byte [rsp + 0x22]
xor r8d, r8d
xor edi, edi
xor ecx, ecx
test r14d, r14d
je 0x140015c8f
mov al, byte [rcx + rsi]
test al, al
je 0x140015c8f
cmp al, bpl
jne 0x140015c68
inc r8d
test r13b, r13b
je 0x140015c84
and al, 0xc0
cmp al, 0xc0
jne 0x140015c84
jmp 0x140015c7a
inc edi
inc rcx
mov al, byte [rsi + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x140015c75
inc edi
inc rcx
sub r14d, 1
jne 0x140015c59
test edx, edx
jne 0x140015c9e
cmp r12b, 0xa
jne 0x140015c9e
lea ebx, [rdx + 1]
jmp 0x140015ca0
xor ebx, ebx
lea eax, [r8 + rdi + 3]
cmp eax, 0x46
jle 0x140015ccd
mov rcx, qword [rsp + 0x140]
movsxd rdx, eax
call fcn.140014ec8
mov qword [rsp + 0x48], rax
mov r15, rax
test rax, rax
je 0x1400160ff
jmp 0x140015cd2
lea r15, [rsp + 0x60]
xor ecx, ecx
xor eax, eax
test ebx, ebx
je 0x140015ce3
lea ecx, [rax + 1]
mov byte [r15], bpl
mov rax, rcx
xor edx, edx
movsxd r8, edi
test edi, edi
jle 0x140015d0f
mov dil, byte [rdx + rsi]
inc ecx
mov byte [rax + r15], dil
inc rax
cmp dil, bpl
jne 0x140015d07
mov byte [rax + r15], dil
inc ecx
inc rax
inc rdx
cmp rdx, r8
jl 0x140015cec
test ebx, ebx
je 0x140015d1c
mov byte [rax + r15], bpl
inc ecx
inc rax
mov byte [rax + r15], 0
mov edi, ecx
test r13b, r13b
je 0x1400154e8
mov r13, qword [rsp + 0x28]
test r13d, r13d
jle 0x1400154ed
lea eax, [rdi - 1]
movsxd rcx, eax
test eax, eax
js 0x1400154ed
mov al, byte [rcx + r15]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x140015d58
inc r13d
test rcx, rcx
jns 0x140015d48
jmp 0x1400154ed
mov bl, 2
xor bpl, bpl
test byte [r8 + 2], 1
je 0x140015dc9
cmp byte [rsp + 0x20], 0
je 0x140015d84
mov rcx, qword [rsp + 0x40]
call fcn.140014e98
mov rdi, rax
jmp 0x140015da3
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140015d9f
cmp bl, 2
jne 0x140015d9f
mov rdi, qword [r9 - 8]
jmp 0x140015da3
movsxd rdi, dword [r9 - 8]
test rdi, rdi
jns 0x140015dc3
movabs rax, 0x8000000000000000
cmp rdi, rax
jne 0x140015dbc
mov rdi, rax
jmp 0x140015dbf
neg rdi
mov cl, 0x2d
jmp 0x140015e00
mov cl, byte [rsp + 0x21]
jmp 0x140015e04
cmp byte [rsp + 0x20], 0
je 0x140015ddf
mov rcx, qword [rsp + 0x40]
call fcn.140014e98
mov rdi, rax
jmp 0x140015dfe
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140015dfa
cmp bl, 2
jne 0x140015dfa
mov rdi, qword [r9 - 8]
jmp 0x140015dfe
mov edi, dword [r9 - 8]
xor cl, cl
mov byte [rsp + 0x21], cl
mov rax, rdi
neg rax
sbb sil, sil
and sil, r13b
cmp byte [rsp + 0x24], 0
mov r13, qword [rsp + 0x28]
je 0x140015e2f
xor eax, eax
test cl, cl
mov ecx, r13d
setne al
sub ecx, eax
cmp r14d, ecx
cmovl r14d, ecx
cmp r14d, 0x25
jge 0x140015e41
mov ebx, Ordinal_73
lea r9, [rsp + 0x60]
jmp 0x140015e82
movsxd rbx, r14d
add rbx, 0xa
test bpl, bpl
je 0x140015e61
mov eax, 0x55555556
imul r14d
mov eax, edx
shr eax, 0x1f
add eax, edx
cdqe
add rbx, rax
mov rcx, qword [rsp + 0x140]
mov rdx, rbx
call fcn.140014ec8
mov qword [rsp + 0x48], rax
mov r9, rax
test rax, rax
je 0x1400160ff
lea eax, [rbx - 1]
movsxd r15, eax
add r15, r9
cmp r12b, 0xf
jne 0x140015ef9
movabs r10, 0xcccccccccccccccd
mov r8d, edi
mov rax, r10
mul rdi
mov rcx, rdx
shr rcx, 3
lea eax, [rcx + rcx*4]
add eax, eax
sub r8d, eax
cmp r8d, 4
jge 0x140015ed3
mov rax, r10
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140015ed6
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r15, 2
mov al, byte [rdx + rcx*2 + 0xc9091]
mov byte [r15 + 1], al
mov al, byte [rdx + rcx*2 + 0xc9090]
mov byte [r15], al
mov r10, qword [rsp + 0x50]
lea rax, str.0123456789ABCDEF0123456789abcdef
movzx ecx, byte [r10 + 4]
movzx r8d, byte [r10 + 1]
add rcx, rax
xor edx, edx
mov rax, rdi
dec r15
div r8
mov rdi, rax
mov al, byte [rdx + rcx]
mov byte [r15], al
test rdi, rdi
jne 0x140015f12
mov eax, r9d
sub eax, r15d
lea ecx, [rax + rbx - 1]
cmp r14d, ecx
jle 0x140015f50
sub r14d, ecx
mov eax, r14d
add ecx, r14d
dec r15
sub rax, 1
mov byte [r15], 0x30
jne 0x140015f43
test bpl, bpl
je 0x140015fa2
dec ecx
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
movsxd rdi, edx
lea eax, [rdx + rdx*2]
sub r15, rdi
sub ecx, eax
xor edx, edx
lea r8d, [rcx + 1]
jmp 0x140015f9d
sub r8d, 1
lea rax, [rdx + rdi]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
jne 0x140015f9a
inc rdx
mov r8d, 3
dec rdi
mov byte [rdx + r15], bpl
inc rdx
test rdi, rdi
jg 0x140015f78
mov al, byte [rsp + 0x21]
test al, al
je 0x140015fb0
dec r15
mov byte [r15], al
test sil, sil
je 0x140015fdb
mov al, byte [r10 + 5]
test al, al
je 0x140015fdb
lea rcx, [0x1400c8e74]
movzx eax, al
add rax, rcx
jmp 0x140015fd5
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x140015fcc
sub r9d, r15d
lea edi, [r9 + rbx - 1]
jmp 0x1400154ed
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x1400160ff
mov rbx, qword [r9]
movsxd rdi, dword [r9 + 8]
add r9, 0x10
mov qword [rsp + 0x150], r9
imul rdi, rdi, 0x70
mov rdx, qword [rdi + rbx + 0x10]
test rdx, rdx
je 0x140016043
mov rcx, rdx
call fcn.140016f44
mov rcx, rsi
mov r8d, eax
call fcn.1400162e4
lea rdx, [0x1400e2ab0]
mov r8d, 1
mov rcx, rsi
call fcn.1400162e4
mov rdx, qword [rdi + rbx + 0x18]
mov rcx, rdx
call fcn.140016f44
mov r8d, eax
mov rcx, rsi
call fcn.1400162e4
jmp 0x1400156ab
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x1400160ff
mov rdx, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test rdx, rdx
je 0x1400156ab
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x1400156ab
mov rdx, qword [rdx]
jmp 0x140016053
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.1400162e4
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400160c6
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.140014878
xor eax, eax
mov qword [rsp + 0x48], rax
mov rdi, qword [rsp + 0x148]
inc rdi
movsx eax, byte [rdi]
test eax, eax
je 0x1400160ff
mov r9, qword [rsp + 0x150]
mov r12, qword [rsp + 0x40]
jmp 0x140014fbb
lea rdx, [0x1400e2a94]
mov r8d, 1
mov rcx, rsi
call fcn.1400162e4
lea r11, [rsp + 0xf8]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm13, xmmword [r11 - 0x38]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret