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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x5f]
sub rsp, 0xe8
movaps xmmword [rax - 0x58], xmm6
mov rsi, rcx
xor ecx, ecx
movaps xmmword [rax - 0x68], xmm7
xor eax, eax
xor r15d, r15d
test byte [rsi + 0x1d], 2
mov r10, r8
mov r13, rdx
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], rcx
je 0x140016d1d
mov rax, qword [r10]
add r10, 8
mov byte [rsp + 0x21], 1
mov qword [rsp + 0x40], rax
mov qword [rbp + 0x77], r10
jmp 0x140016d21
mov byte [rsp + 0x21], al
movsx eax, byte [rdx]
test eax, eax
je 0x140017e72
movsd xmm7, qword [0x14013aa88]
cmp eax, 0x25
je 0x140016d6b
mov r15, r13
inc r13
mov al, byte [r13]
test al, al
je 0x140016d4b
cmp al, 0x25
jne 0x140016d3c
mov r8d, r13d
mov rdx, r15
mov rcx, rsi
sub r8d, r15d
call fcn.140018038
cmp byte [r13], 0
je 0x140017e72
mov r10, qword [rbp + 0x77]
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
test ecx, ecx
je 0x140017e5d
and dword [rsp + 0x28], 0
xor sil, sil
xor dil, dil
xor r14b, r14b
xor bl, bl
mov byte [rsp + 0x31], 0
mov byte [rsp + 0x22], sil
mov byte [rsp + 0x30], dil
mov byte [rsp + 0x20], sil
mov byte [rbp + 0x7f], sil
or r12d, 0xffffffff
cmp ecx, 0x2c
jg 0x140016ea0
je 0x140016e98
mov edx, ecx
sub edx, 0x20
je 0x140016e8e
dec edx
je 0x140016e81
sub edx, 2
je 0x140016e74
sub edx, 7
je 0x140016ded
dec edx
jne 0x14001700c
mov byte [rsp + 0x20], reloc.ODBC32.dll_SQLGetData
jmp 0x140016fd1
cmp byte [rsp + 0x21], 0
je 0x140016e2d
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140016e0b
xor edx, edx
mov qword [rsp + 0x28], rdx
jmp 0x140016e27
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030b84
mov rdx, rax
mov qword [rsp + 0x28], rax
mov r10, qword [rbp + 0x77]
jmp 0x140016e3d
mov edx, dword [r10]
add r10, 8
mov qword [rsp + 0x28], rdx
mov qword [rbp + 0x77], r10
test edx, edx
jns 0x140016e58
xor eax, eax
mov ecx, edx
mov byte [rbp + 0x7f], 1
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [rsp + 0x28], eax
movsx eax, byte [r13 + 1]
cmp eax, 0x2e
je 0x140016fd1
cmp eax, 0x6c
jne 0x140017000
jmp 0x140016fd1
mov dil, 1
mov byte [rsp + 0x30], dil
jmp 0x140016fd1
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140016fd1
mov byte [rsp + Ordinal_36], 0x20
jmp 0x140016fd1
mov r14b, 0x2c
jmp 0x140016fd1
cmp ecx, 0x2d
je 0x140016fcd
cmp ecx, 0x2e
je 0x140016f1d
cmp ecx, 0x30
je 0x140016f13
jle 0x14001700c
cmp ecx, 0x39
jg 0x140016fe6
inc r13
lea edx, [rcx - 0x30]
movsx ecx, byte [r13]
mov qword [rbp + 0x6f], r13
cmp ecx, 0x30
jl 0x140016ef5
cmp ecx, 0x39
jg 0x140016ef1
lea edx, [rdx + rdx*4]
inc r13
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r13]
cmp ecx, 0x30
jge 0x140016ed6
mov qword [rbp + 0x6f], r13
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x140016f0b
cmp ecx, 0x6c
jne 0x14001700c
dec r13
jmp 0x140016fd1
mov byte [rsp + 0x31], 1
jmp 0x140016fd1
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
cmp ecx, 0x2a
jne 0x140016f9b
cmp byte [rsp + 0x21], 0
je 0x140016f65
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140016f48
xor r12d, r12d
jmp 0x140016f5f
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030b84
mov r12, rax
mov r10, qword [rbp + 0x77]
jmp 0x140016f70
mov r12d, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
jns 0x140016f8a
mov ecx, r12d
or eax, 0xffffffff
neg ecx
cmp r12d, 0x80000001
cmovge eax, ecx
mov r12d, eax
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
jmp 0x140016f02
xor edx, edx
cmp ecx, 0x30
jl 0x140016fc1
cmp ecx, 0x39
jg 0x140016fbd
lea edx, [rdx + rdx*4]
inc r13
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r13]
cmp ecx, 0x30
jge 0x140016fa2
mov qword [rbp + 0x6f], r13
btr edx, 0x1f
mov r12d, edx
jmp 0x140016f02
mov byte [rbp + 0x7f], 1
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
test ecx, ecx
je 0x14001700c
jmp 0x140016dab
cmp ecx, 0x6c
jne 0x14001700c
inc r13
mov bl, 1
movsx ecx, byte [r13]
mov qword [rbp + 0x6f], r13
cmp ecx, 0x6c
jne 0x14001700c
mov bl, 2
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
lea rax, [0x1400e3660]
xor r8d, r8d
mov r13b, 0x11
mov r9, rax
mov qword [rbp - 0x79], rax
mov rdx, rax
mov byte [rsp + 0x23], r13b
lea r11d, [r8 + 6]
movsx eax, byte [rdx]
cmp ecx, eax
je 0x140017047
lea rax, [0x1400e36ea]
add rdx, r11
inc r8
cmp rdx, rax
jl 0x14001702c
jmp 0x140017063
lea rax, [r8 + r8*2]
lea rcx, [0x1400e3660]
lea r9, [rcx + rax*2]
mov qword [rbp - 0x79], r9
mov r13b, byte [r9 + 3]
mov byte [rsp + 0x23], r13b
movzx ecx, r13b
cmp ecx, 0xa
jg 0x1400178f8
cmp ecx, 9
jge 0x14001792a
test r13b, r13b
je 0x140017ab2
test ecx, ecx
jle 0x140017e72
cmp ecx, 3
jle 0x140017411
cmp ecx, 4
je 0x1400173e1
jle 0x140017e72
cmp ecx, r11d
jle 0x1400172ae
cmp ecx, 7
je 0x140017248
cmp ecx, 8
jne 0x140017e72
cmp byte [rsp + 0x21], 0
je 0x140017142
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x1400170d6
xor ecx, ecx
jmp 0x1400170ef
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.1400315dc
mov rcx, rax
mov ebx, 1
mov edx, ebx
test rcx, rcx
je 0x140017139
movsx eax, byte [rcx]
inc rcx
mov byte [rbp - 0x69], al
and eax, 0xc0
cmp al, 0xc0
jne 0x1400171ea
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x1400171ea
mov byte [rbp + rdx - 0x69], r8b
inc rdx
inc ebx
inc rcx
cmp rdx, 4
jl 0x140017111
jmp 0x1400171ea
mov byte [rbp - 0x69], 0
jmp 0x1400171ea
mov ecx, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
cmp ecx, 0x80
jae 0x140017162
mov byte [rbp - 0x69], cl
mov ebx, 1
jmp 0x1400171ea
mov eax, ecx
cmp ecx, 0x800
jae 0x140017186
shr eax, 6
and cl, 0x3f
mov ebx, 2
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [rbp - 0x68], cl
mov byte [rbp - 0x69], al
jmp 0x1400171ea
cmp ecx, 0x10000
jae 0x1400171b4
shr eax, 0xc
mov ebx, 3
and al, 0xf
sub al, 0x20
mov byte [rbp - 0x69], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [rbp - 0x67], cl
mov byte [rbp - 0x68], al
jmp 0x1400171ea
shr eax, 0x12
mov dl, 0x3f
mov r8b, 0x80
and al, 7
mov ebx, 4
sub al, 0x10
mov byte [rbp - 0x69], al
mov eax, ecx
shr eax, 0xc
and al, dl
add al, r8b
mov byte [rbp - 0x68], al
mov eax, ecx
and cl, dl
shr eax, 6
and al, dl
add al, r8b
add cl, r8b
mov byte [rbp - 0x66], cl
mov byte [rbp - 0x67], al
cmp r12d, 1
jle 0x14001723f
mov rcx, qword [rsp + 0x28]
mov r15, qword [rbp + 0x67]
mov eax, 1
sub eax, r12d
add ecx, eax
mov qword [rsp + 0x28], rcx
cmp ecx, 1
jle 0x140017226
cmp byte [rbp + 0x7f], 0
jne 0x140017226
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r15
call fcn.140017f9c
and dword [rsp + 0x28], 0
lea edi, [r12 - 1]
lea rdx, [rbp - 0x69]
mov r8d, ebx
mov rcx, r15
call fcn.140018038
dec rdi
jne 0x14001722b
lea r15, [rbp - 0x69]
jmp 0x140017a7c
mov byte [rbp - 0x69], 0x25
mov ebx, 1
lea r15, [rbp - 0x69]
mov rdi, qword [rsp + 0x28]
mov r14b, byte [rbp + 0x7f]
mov rsi, qword [rbp + 0x67]
sub edi, ebx
mov qword [rsp + 0x28], rdi
test edi, edi
jle 0x140017e1a
test r14b, r14b
jne 0x140017283
mov r8b, 0x20
mov edx, edi
mov rcx, rsi
call fcn.140017f9c
mov r8d, ebx
mov rdx, r15
mov rcx, rsi
call fcn.140018038
test r14b, r14b
je 0x140017e28
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.140017f9c
jmp 0x140017e28
cmp byte [rsp + 0x21], 0
je 0x1400172ec
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x1400172c8
xor r15d, r15d
jmp 0x1400172e7
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.1400315dc
mov r11d, 6
mov r15, rax
mov r13b, 5
jmp 0x1400172f7
mov r15, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r15, r15
jne 0x140017305
lea r15, [0x1400fc5cc]
jmp 0x140017367
cmp r13b, r11b
jne 0x140017367
mov rax, qword [rbp + 0x67]
cmp dword [rax + 0x18], 0
jne 0x14001735f
cmp dword [rax + 0x14], 0
je 0x14001735f
cmp dword [rsp + 0x28], 0
jne 0x14001735f
test r12d, r12d
jns 0x14001735f
cmp byte [rax + 0x1c], 0
jne 0x14001735f
mov rcx, qword [rax]
mov rdx, r15
mov rsi, rax
mov qword [rax + 8], r15
call fcn.1400165b4
mov dword [rsi + 0x10], eax
or rax, 0xffffffffffffffff
inc rax
cmp byte [r15 + rax], 0
jne 0x140017345
btr eax, 0x1f
or byte [rsi + 0x1d], 4
mov dword [rsi + 0x18], eax
jmp 0x140017401
mov rax, r15
mov qword [rsp + 0x48], rax
test r12d, r12d
js 0x1400173ca
test sil, sil
je 0x1400173a0
mov rbx, r15
jmp 0x140017393
mov al, byte [rbx]
dec r12d
test al, al
je 0x140017398
inc rbx
cmp al, 0xc0
jb 0x140017393
jmp 0x14001738b
inc rbx
mov al, byte [rbx]
and al, 0xc0
cmp al, 0x80
je 0x140017388
test r12d, r12d
jg 0x140017376
sub ebx, r15d
jmp 0x140017a71
xor ebx, ebx
xor eax, eax
movsxd rcx, r12d
test r12d, r12d
jle 0x140017255
cmp byte [rax + r15], 0
je 0x140017255
inc rax
inc ebx
cmp rax, rcx
jl 0x1400173b0
jmp 0x140017a71
or rbx, 0xffffffffffffffff
inc rbx
cmp byte [r15 + rbx], 0
jne 0x1400173ce
btr ebx, 0x1f
jmp 0x140017a71
cmp byte [rsp + 0x21], 0
mov rsi, qword [rbp + 0x67]
jne 0x1400173fc
mov rcx, qword [r10]
mov eax, dword [rsi + 0x18]
add r10, 8
mov dword [rcx], eax
mov qword [rbp + 0x77], r10
and dword [rsp + 0x28], 0
mov rdi, qword [rsp + 0x28]
mov r14b, byte [rbp + 0x7f]
xor ebx, ebx
jmp 0x140017262
cmp byte [rsp + 0x21], 0
je 0x140017444
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x14001742b
xorps xmm6, xmm6
jmp 0x140017451
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030bdc
movaps xmm6, xmm0
jmp 0x140017451
movsd xmm6, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
mov ecx, 6
cmovs r12d, ecx
mov qword [rsp + 0x38], r12
comisd xmm6, xmmword [0x14013aa08]
jae 0x14001747e
xorpd xmm6, xmmword [0x14013ac20]
mov r9b, 0x2d
mov byte [rsp + 0x20], r9b
jmp 0x140017483
mov r9b, byte [rsp + 0x20]
cmp r13b, 3
jne 0x140017496
test r12d, r12d
jle 0x140017496
dec r12d
mov qword [rsp + 0x38], r12
mov eax, 0x66666667
mov r8d, r12d
and r8d, 0xfff
imul r8d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, r8d
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub eax, ecx
movsxd rcx, eax
lea rax, [0x140000000]
movsd xmm2, qword [rax + rcx*8 + 0xe76f0]
cmp r8d, 0xa
jl 0x1400174ef
mov eax, 0xcccccccd
mul r8d
shr edx, 3
mov eax, edx
mulsd xmm2, qword [0x14013aa20]
dec rax
jne 0x1400174e2
cmp r13b, 1
jne 0x140017537
movsd qword [rbp - 0x19], xmm6
mov rcx, qword [rbp - 0x19]
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, r12d
cmp edx, 0xf
jge 0x140017533
movaps xmm0, xmm6
mulsd xmm0, qword [0x14013aa18]
addsd xmm2, xmm0
addsd xmm6, xmm2
movaps xmm0, xmm6
xor esi, esi
call fcn.140018d28
test eax, eax
je 0x140017554
lea r15, [0x1400fc5c8]
lea ebx, [rsi + 3]
jmp 0x140017255
comisd xmm6, xmmword [0x14013aa08]
jbe 0x140017628
comisd xmm6, xmmword [0x14013ab28]
movsd xmm1, qword [0x14013aa78]
mov r12d, 0x15e
jb 0x14001759b
cmp esi, r12d
jg 0x14001759b
mulsd xmm1, qword [0x14013ab28]
add esi, 0x64
movaps xmm0, xmm1
mulsd xmm0, qword [0x14013ab28]
comisd xmm6, xmm0
jae 0x14001757a
movaps xmm0, xmm1
jmp 0x1400175ab
cmp esi, r12d
jg 0x1400175b9
movaps xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x14013aaf8]
comisd xmm6, xmm0
jae 0x1400175a0
movaps xmm0, xmm1
jmp 0x1400175c8
cmp esi, r12d
jg 0x1400175d2
movaps xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x1400175be
divsd xmm6, xmm1
jmp 0x1400175e3
mulsd xmm6, qword [0x14013aae0]
sub esi, 8
comisd xmm6, xmmword [0x14013aa28]
jb 0x1400175d8
jmp 0x1400175f5
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x14013aa78]
jb 0x1400175ef
cmp esi, r12d
jle 0x140017628
xor eax, eax
test r9b, r9b
mov byte [rbp - 0x69], r9b
setne al
mov dword [rbp + rax - 0x69], 0x666e49
xor eax, eax
test r9b, r9b
setne al
lea ebx, [rax + 3]
jmp 0x140017251
lea rdi, [rbp - 0x69]
cmp r13b, 1
je 0x140017646
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140017646
mulsd xmm6, qword [0x14013aa60]
inc esi
mov rax, qword [rsp + 0x38]
cmp r13b, 3
jne 0x140017707
cmp byte [rsp + 0x30], 0
sete r12b
cmp esi, 0xfffffffc
jl 0x140017700
cmp esi, eax
jg 0x140017700
sub eax, esi
mov byte [rsp + 0x23], 1
mov qword [rsp + 0x38], rax
mov ebx, esi
movsxd r13, dword [rsp + 0x28]
movsxd rdx, eax
xor eax, eax
test ebx, ebx
cmovg eax, ebx
add rdx, 0xf
cdqe
add rax, r13
add rdx, rax
cmp rdx, 0x46
jle 0x1400176bb
mov r15, qword [rbp + 0x67]
mov rcx, r15
call fcn.140016c4c
mov qword [rsp + 0x48], rax
mov rdi, rax
test rax, rax
je 0x140017e72
movzx r8d, byte [rsp + 0x22]
mov rax, qword [rsp + 0x38]
mov r9b, byte [rsp + 0x20]
test eax, eax
lea edx, [r8 + r8*4]
mov qword [rbp - 0x11], rdi
setg r15b
lea r14d, [rdx*2 + 0x10]
or r15b, r8b
or r15b, byte [rsp + 0x30]
test r9b, r9b
je 0x1400176f4
mov byte [rdi], r9b
inc rdi
test ebx, ebx
jns 0x140017720
mov byte [rdi], 0x30
inc rdi
jmp 0x140017750
mov byte [rsp + 0x23], 2
jmp 0x140017719
mov r9b, byte [rsp + 0x22]
mov r12b, r9b
cmp r13b, 2
jne 0x14001767b
xor ebx, ebx
jmp 0x14001767d
test r14d, r14d
jg 0x140017729
mov al, 0x30
jmp 0x140017742
cvttsd2si eax, xmm6
dec r14d
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rdi], al
inc rdi
dec ebx
jns 0x140017720
mov rax, qword [rsp + 0x38]
test r15b, r15b
je 0x14001775b
mov byte [rdi], 0x2e
inc rdi
inc ebx
jns 0x1400177b7
neg ebx
mov dl, 0x30
mov rcx, rdi
mov r8d, ebx
call fcn.1400c8410
mov rax, qword [rsp + 0x38]
mov r9b, byte [rsp + 0x20]
mov r8b, byte [rsp + 0x22]
add rdi, rbx
sub eax, ebx
jmp 0x1400177b7
dec eax
mov qword [rsp + 0x38], rax
test r14d, r14d
jg 0x140017794
mov al, 0x30
jmp 0x1400177ad
cvttsd2si eax, xmm6
dec r14d
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rdi], al
mov rax, qword [rsp + 0x38]
inc rdi
test eax, eax
jg 0x140017784
test r12b, r12b
je 0x1400177f5
test r15b, r15b
je 0x1400177f5
lea rax, [rdi - 1]
jmp 0x1400177d4
mov rdi, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x1400177cb
lea rax, [rdi - 1]
cmp byte [rax], 0x2e
jne 0x1400177f5
test r8b, r8b
je 0x1400177ef
mov byte [rdi], 0x30
inc rdi
jmp 0x1400177f5
mov rdi, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x14001787a
mov r11, qword [rbp - 0x79]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [r11 + 4]
mov al, byte [rax + rcx]
mov byte [rdi], al
test esi, esi
jns 0x140017821
mov byte [rdi + 1], 0x2d
add rdi, 2
neg esi
jmp 0x140017829
mov byte [rdi + 1], reloc.ODBC32.dll_SQLGetData
add rdi, 2
cmp esi, 0x64
jl 0x14001784c
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 [rdi], al
inc rdi
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 [rdi], al
mov al, dl
shl dl, 2
add al, dl
add al, al
sub sil, al
add sil, 0x30
add rdi, 2
mov byte [rdi - 1], sil
mov r15, qword [rbp - 0x11]
mov r14b, byte [rbp + 0x7f]
mov byte [rdi], 0
sub edi, r15d
cmp byte [rsp + 0x31], 0
mov ebx, edi
mov rdi, qword [rsp + 0x28]
je 0x14001725e
test r14b, r14b
jne 0x14001725e
cmp ebx, edi
jge 0x14001725e
mov edx, edi
sub edx, ebx
movsxd rax, edx
cmp r13, rax
jl 0x1400178d5
lea rcx, [r15 + r13]
mov r8, rax
sub r13, rax
neg r8
inc r13
mov al, byte [r8 + rcx]
mov byte [rcx], al
dec rcx
dec r13
jne 0x1400178c7
xor eax, eax
test r9b, r9b
setne al
movsxd rcx, eax
test edx, edx
je 0x1400178f1
mov r8d, edx
add rcx, r15
mov dl, 0x30
call fcn.1400c8410
mov ebx, edi
jmp 0x14001725e
sub ecx, 0xb
je 0x140017dea
dec ecx
je 0x140017d5d
dec ecx
je 0x140017ab0
dec ecx
je 0x14001792a
dec ecx
je 0x140017ab2
dec ecx
jne 0x140017e72
jmp 0x140017ab5
mov eax, Ordinal_36
cmp r13b, 0xe
lea r14d, [rax + 5]
cmove r14d, eax
cmp byte [rsp + 0x21], 0
je 0x14001796f
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017954
xor ebx, ebx
jmp 0x14001797a
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dl, 1
mov dword [r8 + 4], eax
call fcn.1400315dc
mov rbx, rax
jmp 0x14001797a
mov rbx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
xor edx, edx
test rbx, rbx
sete dl
test edx, edx
je 0x14001799c
lea rax, str.NULL
lea rbx, [0x1400fc5d8]
cmp r13b, 0xa
cmove rbx, rax
xor r8d, r8d
xor esi, esi
xor ecx, ecx
test r12d, r12d
je 0x1400179e2
mov r9b, byte [rsp + 0x22]
mov al, byte [rcx + rbx]
test al, al
je 0x1400179e2
cmp al, r14b
jne 0x1400179bc
inc r8d
test r9b, r9b
je 0x1400179d8
and al, 0xc0
cmp al, 0xc0
jne 0x1400179d8
jmp 0x1400179ce
inc esi
inc rcx
mov al, byte [rcx + rbx + 1]
and al, 0xc0
cmp al, 0x80
je 0x1400179c9
inc esi
inc rcx
dec r12d
jne 0x1400179ad
test edx, edx
jne 0x1400179f1
cmp r13b, 0xa
jne 0x1400179f1
lea edi, [rdx + 1]
jmp 0x1400179f3
xor edi, edi
lea eax, [rsi + 3]
add eax, r8d
cmp eax, 0x46
jle 0x140017a1d
mov rcx, qword [rbp + 0x67]
movsxd rdx, eax
call fcn.140016c4c
mov qword [rsp + 0x48], rax
mov r15, rax
test rax, rax
je 0x140017e72
jmp 0x140017a21
lea r15, [rbp - 0x69]
xor ecx, ecx
xor eax, eax
test edi, edi
je 0x140017a31
lea ecx, [rax + 1]
mov byte [r15], r14b
mov eax, ecx
xor edx, edx
movsxd r9, esi
test esi, esi
jle 0x140017a5d
mov r8b, byte [rdx + rbx]
inc ecx
mov byte [rax + r15], r8b
inc rax
cmp r8b, r14b
jne 0x140017a55
mov byte [rax + r15], r8b
inc ecx
inc rax
inc rdx
cmp rdx, r9
jl 0x140017a3a
test edi, edi
je 0x140017a6a
mov byte [rax + r15], r14b
inc ecx
inc rax
mov byte [rax + r15], 0
mov ebx, ecx
cmp byte [rsp + 0x22], 0
je 0x140017255
mov rdi, qword [rsp + 0x28]
test edi, edi
jle 0x14001725a
lea eax, [rbx - 1]
movsxd rcx, eax
test eax, eax
js 0x14001725a
mov al, byte [rcx + r15]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x140017aa6
inc edi
test rcx, rcx
jns 0x140017a97
jmp 0x14001725a
mov bl, 2
xor r14b, r14b
test byte [r9 + 2], 1
je 0x140017b30
cmp byte [rsp + 0x21], 0
je 0x140017af5
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017adc
xor ebx, ebx
mov cl, byte [rsp + 0x20]
jmp 0x140017b83
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030b84
mov rbx, rax
jmp 0x140017b10
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x140017b0c
cmp bl, 2
jne 0x140017b0c
mov rbx, qword [r10 - 8]
jmp 0x140017b10
movsxd rbx, dword [r10 - 8]
test rbx, rbx
jns 0x140017ad3
movabs rax, 0x8000000000000000
cmp rbx, rax
jne 0x140017b29
mov rbx, rax
jmp 0x140017b2c
neg rbx
mov cl, 0x2d
jmp 0x140017b7f
cmp byte [rsp + 0x21], 0
je 0x140017b62
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017b49
xor ebx, ebx
jmp 0x140017b7d
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030b84
mov rbx, rax
jmp 0x140017b7d
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x140017b79
cmp bl, 2
jne 0x140017b79
mov rbx, qword [r10 - 8]
jmp 0x140017b7d
mov ebx, dword [r10 - 8]
xor cl, cl
mov byte [rsp + 0x20], cl
mov rax, rbx
neg rax
sbb sil, sil
and sil, dil
cmp byte [rsp + 0x31], 0
je 0x140017baa
xor eax, eax
test cl, cl
mov ecx, dword [rsp + 0x28]
setne al
sub ecx, eax
cmp r12d, ecx
cmovl r12d, ecx
cmp r12d, 0x25
jge 0x140017bbb
mov edi, Ordinal_73
lea r10, [rbp - 0x69]
jmp 0x140017bf8
movsxd rdi, r12d
add rdi, 0xa
test r14b, r14b
je 0x140017bdb
mov eax, 0x55555556
imul r12d
mov eax, edx
shr eax, 0x1f
add eax, edx
cdqe
add rdi, rax
mov rcx, qword [rbp + 0x67]
mov rdx, rdi
call fcn.140016c4c
mov qword [rsp + 0x48], rax
mov r10, rax
test rax, rax
je 0x140017e72
lea eax, [rdi - 1]
movsxd r15, eax
add r15, r10
cmp r13b, 0xf
jne 0x140017c6f
movabs r9, 0xcccccccccccccccd
mov r8d, ebx
mov rax, r9
mul rbx
mov rcx, rdx
shr rcx, 3
lea eax, [rcx + rcx*4]
add eax, eax
sub r8d, eax
cmp r8d, 4
jge 0x140017c49
mov rax, r9
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140017c4c
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r15, 2
mov al, byte [rdx + rcx*2 + 0xe77d9]
mov byte [r15 + 1], al
mov cl, byte [rdx + rcx*2 + 0xe77d8]
mov byte [r15], cl
mov r11, qword [rbp - 0x79]
lea rax, str.0123456789ABCDEF0123456789abcdef
movzx ecx, byte [r11 + 4]
movzx r8d, byte [r11 + 1]
add rcx, rax
xor edx, edx
mov rax, rbx
dec r15
div r8
mov rbx, rax
mov al, byte [rcx + rdx]
mov byte [r15], al
test rbx, rbx
jne 0x140017c87
mov eax, r10d
lea ecx, [rdi - 1]
sub eax, r15d
add ecx, eax
cmp r12d, ecx
jle 0x140017cc5
sub r12d, ecx
mov eax, r12d
add ecx, r12d
dec r15
mov byte [r15], 0x30
dec rax
jne 0x140017cb9
test r14b, r14b
je 0x140017d16
dec ecx
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
movsxd r8, edx
lea eax, [rdx + rdx*2]
sub r15, r8
sub ecx, eax
xor edx, edx
lea r9d, [rcx + 1]
jmp 0x140017d11
lea rax, [r8 + rdx]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
dec r9d
jne 0x140017d0e
inc rdx
mov r9d, 3
dec r8
mov byte [rdx + r15], r14b
inc rdx
test r8, r8
jg 0x140017ced
mov al, byte [rsp + 0x20]
test al, al
je 0x140017d24
dec r15
mov byte [r15], al
test sil, sil
je 0x140017d4f
mov al, byte [r11 + 5]
test al, al
je 0x140017d4f
lea rcx, [0x1400e6964]
movzx eax, al
add rax, rcx
jmp 0x140017d49
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x140017d40
lea ebx, [rdi - 1]
sub r10d, r15d
add ebx, r10d
jmp 0x140017255
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x140017e72
mov rdi, qword [r10]
movsxd rbx, dword [r10 + 8]
add r10, 0x10
mov qword [rbp + 0x77], r10
imul rbx, rbx, 0x70
mov rdx, qword [rbx + rdi + 0x10]
test rdx, rdx
je 0x140017dba
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017d8c
and eax, 0x3fffffff
mov rcx, rsi
mov r8d, eax
call fcn.140018038
lea rdx, [0x1400fc5e0]
mov r8d, 1
mov rcx, rsi
call fcn.140018038
mov rdx, qword [rbx + rdi + 0x18]
test rdx, rdx
jne 0x140017dc8
xor eax, eax
jmp 0x140017dda
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017dcc
and eax, 0x3fffffff
mov r8d, eax
mov rcx, rsi
call fcn.140018038
jmp 0x1400173fc
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x140017e72
mov rdx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test rdx, rdx
je 0x1400173fc
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x1400173fc
mov rdx, qword [rdx]
jmp 0x140017ddd
mov r8d, ebx
mov rdx, r15
mov rcx, rsi
call fcn.140018038
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140017e44
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.140016650
xor eax, eax
mov qword [rsp + 0x48], rax
mov r13, qword [rbp + 0x6f]
inc r13
movsx eax, byte [r13]
test eax, eax
je 0x140017e72
mov r10, qword [rbp + 0x77]
jmp 0x140016d34
lea rdx, [0x1400fc5c4]
mov r8d, 1
mov rcx, rsi
call fcn.140018038
lea r11, [rsp + 0xe8]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret