Function at 0x140016d58
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 0x140016dbb
mov r12, qword [r9]
add r9, 8
mov byte [rsp + 0x20], 1
mov qword [rsp + 0x40], r12
mov qword [rax + 0x18], r9
jmp 0x140016dbf
mov byte [rsp + 0x20], cl
movsx eax, byte [rdx]
test eax, eax
je 0x140017f1f
movsd xmm13, qword [0x14012b950]
movsd xmm7, qword [0x14012b990]
cmp eax, 0x25
je 0x140016e12
mov r15, rdi
inc rdi
mov al, byte [rdi]
test al, al
je 0x140016df0
cmp al, 0x25
jne 0x140016de3
mov r8d, edi
mov rdx, r15
mov rcx, rsi
sub r8d, r15d
call fcn.140018104
cmp byte [rdi], 0
je 0x140017f1f
mov r9, qword [rsp + 0x150]
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x140017f0a
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 0x140016f45
je 0x140016f3d
mov edx, ecx
sub edx, 0x20
je 0x140016f33
sub edx, 1
je 0x140016f26
sub edx, 2
je 0x140016f19
sub edx, 7
je 0x140016e9c
cmp edx, 1
jne 0x1400170aa
mov byte [rsp + 0x21], reloc.ODBC32.dll_SQLGetData
jmp 0x140017069
cmp byte [rsp + 0x20], 0
je 0x140016ebd
mov rcx, r12
call fcn.140016cb8
mov r9, qword [rsp + 0x150]
mov rdx, rax
mov qword [rsp + 0x28], rax
jmp 0x140016ed1
mov edx, dword [r9]
add r9, 8
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x150], r9
test edx, edx
jns 0x140016ef0
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 0x140017069
cmp eax, 0x6c
je 0x140017069
mov qword [rsp + 0x148], rcx
movsx ecx, byte [rcx]
jmp 0x1400170aa
mov r13b, 1
mov byte [rsp + 0x30], r13b
jmp 0x140017069
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140017069
mov byte [rsp + 0x21], Ordinal_36
jmp 0x140017069
mov bpl, 0x2c
jmp 0x140017069
cmp ecx, 0x2d
je 0x140017061
cmp ecx, 0x2e
je 0x140016fc4
cmp ecx, 0x30
je 0x140016fba
jle 0x1400170aa
cmp ecx, 0x39
jg 0x140017080
inc rdi
lea edx, [rcx - 0x30]
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x30
jl 0x140016f9c
cmp ecx, 0x39
jg 0x140016f94
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x140016f7d
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x140016fb2
cmp ecx, 0x6c
jne 0x1400170aa
dec rdi
jmp 0x140017069
mov byte [rsp + 0x24], 1
jmp 0x140017069
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
cmp ecx, 0x2a
jne 0x14001702f
cmp byte [rsp + 0x20], 0
je 0x140016ff3
mov rcx, r12
call fcn.140016cb8
mov r9, qword [rsp + 0x150]
mov r14, rax
jmp 0x140017002
mov r14d, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r14d, r14d
jns 0x14001701c
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 0x140016fa9
xor edx, edx
cmp ecx, 0x30
jl 0x140017055
cmp ecx, 0x39
jg 0x14001704d
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x140017036
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov r14d, edx
jmp 0x140016fa9
mov byte [rsp + 0x158], 1
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x1400170aa
jmp 0x140016e58
cmp ecx, 0x6c
jne 0x1400170aa
inc rdi
mov bl, 1
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x6c
jne 0x1400170aa
inc rdi
mov bl, 2
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
lea r11, [0x1400d46e0]
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 0x1400170e5
lea rax, [0x1400d476a]
add rdx, r10
inc rdi
cmp rdx, rax
jl 0x1400170ca
jmp 0x1400170fb
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 0x1400179bf
cmp ecx, 9
jge 0x1400179f6
test r12b, r12b
je 0x140017b84
test ecx, ecx
jle 0x140017f1f
cmp ecx, 3
jle 0x1400174e3
cmp ecx, 4
je 0x1400174a8
jle 0x140017f1f
cmp ecx, r10d
jle 0x140017369
cmp ecx, 7
je 0x1400172f9
cmp ecx, 8
jne 0x140017f1f
cmp byte [rsp + 0x20], 0
je 0x1400171db
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14001716d
xor ecx, ecx
jmp 0x140017185
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.140031978
mov rcx, rax
mov edi, 1
mov rdx, rdi
test rcx, rcx
je 0x1400171d1
movsx eax, byte [rcx]
inc rcx
mov byte [rsp + 0x60], al
and eax, 0xc0
cmp al, 0xc0
jne 0x140017291
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x140017291
mov byte [rsp + rdx + 0x60], r8b
inc rdx
inc edi
inc rcx
cmp rdx, 4
jl 0x1400171a9
jmp 0x140017291
mov byte [rsp + 0x60], 0
jmp 0x140017291
mov ecx, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
cmp ecx, 0x80
jae 0x140017200
mov byte [rsp + 0x60], cl
mov edi, 1
jmp 0x140017291
mov eax, ecx
cmp ecx, 0x800
jae 0x140017226
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 0x140017291
cmp ecx, 0x10000
jae 0x140017257
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 0x140017291
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 0x1400172ef
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 0x1400172d5
cmp byte [rsp + 0x158], 0
jne 0x1400172d5
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r15
call fcn.140018068
and dword [rsp + 0x28], 0
lea ebx, [r14 - 1]
lea rdx, [rsp + 0x60]
mov r8d, edi
mov rcx, r15
call fcn.140018104
sub rbx, 1
jne 0x1400172d9
lea r15, [rsp + 0x60]
jmp 0x140017b4c
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 0x140017ebc
test bl, bl
jne 0x14001733f
mov r8b, 0x20
mov edx, r13d
mov rcx, rsi
call fcn.140018068
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.140018104
test bl, bl
je 0x140017eca
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.140018068
jmp 0x140017eca
cmp byte [rsp + 0x20], 0
je 0x1400173a5
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140017382
xor r15d, r15d
jmp 0x1400173a0
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.140031978
mov r10d, 6
mov r15, rax
mov r12b, 5
jmp 0x1400173b4
mov r15, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r15, r15
jne 0x1400173c2
lea r15, [0x1400f11fc]
jmp 0x14001742b
cmp r12b, r10b
jne 0x14001742b
mov rax, qword [rsp + 0x140]
cmp dword [rax + 0x18], 0
jne 0x140017423
cmp dword [rax + 0x14], 0
je 0x140017423
cmp dword [rsp + 0x28], 0
jne 0x140017423
test r14d, r14d
jns 0x140017423
cmp byte [rax + 0x1c], 0
jne 0x140017423
mov rcx, qword [rax]
mov rdx, r15
mov rsi, rax
mov qword [rax + 8], r15
call fcn.1400165f4
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 0x1400174d0
mov rax, r15
mov qword [rsp + 0x48], rax
test r14d, r14d
js 0x140017490
test sil, sil
je 0x140017461
mov rdi, r15
jmp 0x140017457
mov al, byte [rdi]
dec r14d
test al, al
je 0x14001745c
inc rdi
cmp al, 0xc0
jb 0x140017457
jmp 0x14001744f
inc rdi
mov al, byte [rdi]
and al, 0xc0
cmp al, 0x80
je 0x14001744c
test r14d, r14d
jg 0x14001743a
sub edi, r15d
jmp 0x140017486
xor edi, edi
xor eax, eax
movsxd rcx, r14d
test r14d, r14d
jle 0x140017308
cmp byte [rax + r15], 0
je 0x140017308
inc rax
inc edi
cmp rax, rcx
jl 0x140017471
mov r13b, byte [rsp + 0x22]
jmp 0x140017b43
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r15
repne scasb al, byte [rdi]
not rcx
lea rdi, [rcx - 1]
btr edi, 0x1f
jmp 0x140017486
cmp byte [rsp + 0x20], 0
mov rsi, qword [rsp + 0x140]
jne 0x1400174cb
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 0x14001731c
cmp byte [rsp + 0x20], 0
je 0x140017516
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x1400174fd
xorpd xmm6, xmm6
jmp 0x140017527
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.140030f88
movapd xmm6, xmm0
jmp 0x140017527
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 [0x14012b980]
jae 0x140017551
mov r8b, 0x2d
xorpd xmm6, xmm13
mov byte [rsp + 0x21], r8b
jmp 0x140017556
mov r8b, byte [rsp + 0x21]
cmp r12b, 3
jne 0x140017569
test r14d, r14d
jle 0x140017569
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 + 0xd4770]
jl 0x1400175be
mov eax, 0xcccccccd
mul edi
shr edx, 3
mov eax, edx
sub rax, 1
mulsd xmm2, qword [0x14012baa8]
jne 0x1400175b0
cmp r12b, 1
jne 0x14001760f
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 0x14001760b
movapd xmm0, xmm6
mulsd xmm0, qword [0x14012baa0]
addsd xmm2, xmm0
addsd xmm6, xmm2
movapd xmm0, xmm6
xor esi, esi
call fcn.140018d2c
test eax, eax
je 0x14001762d
lea r15, [0x1400f11f8]
lea edi, [rsi + 3]
jmp 0x140017308
comisd xmm6, xmmword [0x14012b980]
jbe 0x140017702
comisd xmm6, xmmword [0x14012ba98]
movsd xmm1, qword [0x14012b988]
mov ebp, 0x15e
jb 0x140017673
cmp esi, ebp
jg 0x140017673
mulsd xmm1, qword [0x14012ba98]
add esi, 0x64
movapd xmm0, xmm1
mulsd xmm0, qword [0x14012ba98]
comisd xmm6, xmm0
jae 0x140017652
movapd xmm0, xmm1
jmp 0x140017684
cmp esi, ebp
jg 0x140017692
movapd xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x14012ba90]
comisd xmm6, xmm0
jae 0x140017679
movapd xmm0, xmm1
jmp 0x1400176a2
cmp esi, ebp
jg 0x1400176ac
movapd xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x140017698
divsd xmm6, xmm1
jmp 0x1400176bd
mulsd xmm6, qword [0x14012ba88]
sub esi, 8
comisd xmm6, xmmword [0x14012ba80]
jb 0x1400176b2
jmp 0x1400176cf
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x14012b988]
jb 0x1400176c9
cmp esi, ebp
jle 0x140017702
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 0x140017303
lea rbx, [rsp + 0x60]
cmp r12b, 1
je 0x140017721
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140017721
mulsd xmm6, qword [0x14012ba78]
inc esi
cmp r12b, 3
jne 0x1400177d9
test r13b, r13b
sete r13b
cmp esi, 0xfffffffc
jl 0x1400177d2
cmp esi, r14d
jg 0x1400177d2
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 0x140017792
mov rcx, qword [rsp + 0x140]
call fcn.140016ce8
mov qword [rsp + 0x48], rax
mov rbx, rax
test rax, rax
je 0x140017f1f
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 0x1400177c6
mov byte [rbx], r8b
inc rbx
test edi, edi
jns 0x1400177ef
mov byte [rbx], 0x30
inc rbx
jmp 0x14001781e
mov byte [rsp + 0x23], 2
jmp 0x1400177e8
mov r13b, byte [rsp + 0x22]
cmp r12b, 2
jne 0x140017751
xor edi, edi
jmp 0x140017753
test ebp, ebp
jg 0x1400177f7
mov al, 0x30
jmp 0x14001780f
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 0x1400177ef
mov rax, qword [rsp + 0x38]
test r12b, r12b
je 0x140017829
mov byte [rbx], 0x2e
inc rbx
add edi, 1
jns 0x140017884
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 0x140017884
dec eax
mov qword [rsp + 0x38], rax
test ebp, ebp
jg 0x140017862
mov al, 0x30
jmp 0x14001787a
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 0x140017853
test r13b, r13b
je 0x1400178c2
test r12b, r12b
je 0x1400178c2
lea rax, [rbx - 1]
jmp 0x1400178a1
mov rbx, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x140017898
lea rax, [rbx - 1]
cmp byte [rax], 0x2e
jne 0x1400178c2
test r9b, r9b
je 0x1400178bc
mov byte [rbx], 0x30
inc rbx
jmp 0x1400178c2
mov rbx, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x140017948
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 0x1400178ef
mov byte [rbx + 1], 0x2d
add rbx, 2
neg esi
jmp 0x1400178f7
mov byte [rbx + 1], reloc.ODBC32.dll_SQLGetData
add rbx, 2
cmp esi, 0x64
jl 0x14001791a
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 0x140017314
test bl, bl
jne 0x140017314
cmp edi, r13d
jge 0x140017314
mov edx, r13d
sub edx, edi
movsxd rdi, edx
cmp r14, rdi
jl 0x14001799b
mov rcx, r15
sub rcx, rdi
mov al, byte [r14 + rcx]
mov byte [r14 + r15], al
dec r14
cmp r14, rdi
jge 0x14001798b
xor eax, eax
test r8b, r8b
setne al
movsxd rcx, eax
test edx, edx
je 0x1400179b7
mov r8d, edx
add rcx, r15
mov dl, 0x30
call sub.msvcrt.dll_memset
mov edi, r13d
jmp 0x140017314
sub ecx, 0xb
je 0x140017e80
sub ecx, 1
je 0x140017e08
sub ecx, 1
je 0x140017b82
sub ecx, 1
je 0x1400179f6
sub ecx, 1
je 0x140017b84
sub ecx, 1
jne 0x140017f1f
jmp 0x140017b87
mov ebp, Ordinal_41
cmp r12b, 0xe
lea eax, [rbp - 5]
cmove ebp, eax
cmp byte [rsp + 0x20], 0
je 0x140017a37
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140017a1d
xor esi, esi
jmp 0x140017a46
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.140031978
mov rsi, rax
jmp 0x140017a46
mov rsi, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
xor edx, edx
test rsi, rsi
sete dl
test edx, edx
je 0x140017a68
lea rax, str.NULL
lea rsi, [0x1400f1208]
cmp r12b, 0xa
cmove rsi, rax
mov r13b, byte [rsp + 0x22]
xor r8d, r8d
xor edi, edi
xor ecx, ecx
test r14d, r14d
je 0x140017aaf
mov al, byte [rcx + rsi]
test al, al
je 0x140017aaf
cmp al, bpl
jne 0x140017a88
inc r8d
test r13b, r13b
je 0x140017aa4
and al, 0xc0
cmp al, 0xc0
jne 0x140017aa4
jmp 0x140017a9a
inc edi
inc rcx
mov al, byte [rsi + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x140017a95
inc edi
inc rcx
sub r14d, 1
jne 0x140017a79
test edx, edx
jne 0x140017abe
cmp r12b, 0xa
jne 0x140017abe
lea ebx, [rdx + 1]
jmp 0x140017ac0
xor ebx, ebx
lea eax, [r8 + rdi + 3]
cmp eax, 0x46
jle 0x140017aed
mov rcx, qword [rsp + 0x140]
movsxd rdx, eax
call fcn.140016ce8
mov qword [rsp + 0x48], rax
mov r15, rax
test rax, rax
je 0x140017f1f
jmp 0x140017af2
lea r15, [rsp + 0x60]
xor ecx, ecx
xor eax, eax
test ebx, ebx
je 0x140017b03
lea ecx, [rax + 1]
mov byte [r15], bpl
mov rax, rcx
xor edx, edx
movsxd r8, edi
test edi, edi
jle 0x140017b2f
mov dil, byte [rdx + rsi]
inc ecx
mov byte [rax + r15], dil
inc rax
cmp dil, bpl
jne 0x140017b27
mov byte [rax + r15], dil
inc ecx
inc rax
inc rdx
cmp rdx, r8
jl 0x140017b0c
test ebx, ebx
je 0x140017b3c
mov byte [rax + r15], bpl
inc ecx
inc rax
mov byte [rax + r15], 0
mov edi, ecx
test r13b, r13b
je 0x140017308
mov r13, qword [rsp + 0x28]
test r13d, r13d
jle 0x14001730d
lea eax, [rdi - 1]
movsxd rcx, eax
test eax, eax
js 0x14001730d
mov al, byte [rcx + r15]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x140017b78
inc r13d
test rcx, rcx
jns 0x140017b68
jmp 0x14001730d
mov bl, 2
xor bpl, bpl
test byte [r8 + 2], 1
je 0x140017be9
cmp byte [rsp + 0x20], 0
je 0x140017ba4
mov rcx, qword [rsp + 0x40]
call fcn.140016cb8
mov rdi, rax
jmp 0x140017bc3
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140017bbf
cmp bl, 2
jne 0x140017bbf
mov rdi, qword [r9 - 8]
jmp 0x140017bc3
movsxd rdi, dword [r9 - 8]
test rdi, rdi
jns 0x140017be3
movabs rax, 0x8000000000000000
cmp rdi, rax
jne 0x140017bdc
mov rdi, rax
jmp 0x140017bdf
neg rdi
mov cl, 0x2d
jmp 0x140017c20
mov cl, byte [rsp + 0x21]
jmp 0x140017c24
cmp byte [rsp + 0x20], 0
je 0x140017bff
mov rcx, qword [rsp + 0x40]
call fcn.140016cb8
mov rdi, rax
jmp 0x140017c1e
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140017c1a
cmp bl, 2
jne 0x140017c1a
mov rdi, qword [r9 - 8]
jmp 0x140017c1e
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 0x140017c4f
xor eax, eax
test cl, cl
mov ecx, r13d
setne al
sub ecx, eax
cmp r14d, ecx
cmovl r14d, ecx
cmp r14d, 0x25
jge 0x140017c61
mov ebx, Ordinal_73
lea r9, [rsp + 0x60]
jmp 0x140017ca2
movsxd rbx, r14d
add rbx, 0xa
test bpl, bpl
je 0x140017c81
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.140016ce8
mov qword [rsp + 0x48], rax
mov r9, rax
test rax, rax
je 0x140017f1f
lea eax, [rbx - 1]
movsxd r15, eax
add r15, r9
cmp r12b, 0xf
jne 0x140017d19
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 0x140017cf3
mov rax, r10
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140017cf6
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r15, 2
mov al, byte [rdx + rcx*2 + 0xd47c1]
mov byte [r15 + 1], al
mov al, byte [rdx + rcx*2 + 0xd47c0]
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 0x140017d32
mov eax, r9d
sub eax, r15d
lea ecx, [rax + rbx - 1]
cmp r14d, ecx
jle 0x140017d70
sub r14d, ecx
mov eax, r14d
add ecx, r14d
dec r15
sub rax, 1
mov byte [r15], 0x30
jne 0x140017d63
test bpl, bpl
je 0x140017dc2
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 0x140017dbd
sub r8d, 1
lea rax, [rdx + rdi]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
jne 0x140017dba
inc rdx
mov r8d, 3
dec rdi
mov byte [rdx + r15], bpl
inc rdx
test rdi, rdi
jg 0x140017d98
mov al, byte [rsp + 0x21]
test al, al
je 0x140017dd0
dec r15
mov byte [r15], al
test sil, sil
je 0x140017dfb
mov al, byte [r10 + 5]
test al, al
je 0x140017dfb
lea rcx, [0x1400d45a4]
movzx eax, al
add rax, rcx
jmp 0x140017df5
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x140017dec
sub r9d, r15d
lea edi, [r9 + rbx - 1]
jmp 0x14001730d
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x140017f1f
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 0x140017e63
mov rcx, rdx
call fcn.140018d64
mov rcx, rsi
mov r8d, eax
call fcn.140018104
lea rdx, [0x1400f1210]
mov r8d, 1
mov rcx, rsi
call fcn.140018104
mov rdx, qword [rdi + rbx + 0x18]
mov rcx, rdx
call fcn.140018d64
mov r8d, eax
mov rcx, rsi
call fcn.140018104
jmp 0x1400174cb
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x140017f1f
mov rdx, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test rdx, rdx
je 0x1400174cb
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x1400174cb
mov rdx, qword [rdx]
jmp 0x140017e73
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.140018104
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140017ee6
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.140016698
xor eax, eax
mov qword [rsp + 0x48], rax
mov rdi, qword [rsp + 0x148]
inc rdi
movsx eax, byte [rdi]
test eax, eax
je 0x140017f1f
mov r9, qword [rsp + 0x150]
mov r12, qword [rsp + 0x40]
jmp 0x140016ddb
lea rdx, [0x1400f11f4]
mov r8d, 1
mov rcx, rsi
call fcn.140018104
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