Function at 0x140016d68
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, 0xd8
mov r12, rcx
movaps xmmword [rax - 0x58], xmm6
xor ecx, ecx
movaps xmmword [rax - 0x68], xmm7
xor r13d, r13d
mov qword [rbp - 0x79], rcx
xor r15d, r15d
mov qword [rsp + 0x38], r13
test byte [r12 + 0x1d], 2
mov r10, r8
mov r11, rdx
je 0x140016dcb
mov r13, qword [r10]
add r10, 8
mov qword [rsp + 0x38], r13
mov qword [rbp + 0x77], r10
mov byte [rsp + 0x20], 1
jmp 0x140016dcf
mov byte [rsp + 0x20], cl
movsx eax, byte [rdx]
test eax, eax
je 0x140017f83
movsd xmm7, qword [0x140146bf8]
cmp eax, 0x25
je 0x140016e1f
mov r15, r11
inc r11
mov al, byte [r11]
test al, al
je 0x140016df8
cmp al, 0x25
jne 0x140016dea
mov r8d, r11d
mov qword [rbp + 0x6f], r11
sub r8d, r15d
mov rdx, r15
mov rcx, r12
call fcn.1400181a0
mov r11, qword [rbp + 0x6f]
cmp byte [r11], 0
je 0x140017f83
mov r10, qword [rbp + 0x77]
inc r11
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
test ecx, ecx
je 0x140017f6e
and dword [rsp + 0x28], 0
xor sil, sil
xor dil, dil
mov byte [rsp + 0x22], sil
xor r14b, r14b
mov byte [rsp + 0x24], dil
xor bl, bl
mov byte [rsp + 0x21], sil
mov byte [rbp + 0x7f], sil
or r12d, 0xffffffff
mov byte [rsp + 0x25], 0
cmp ecx, 0x2c
jg 0x140016f5a
je 0x140016f52
mov edx, ecx
sub edx, 0x20
je 0x140016f48
sub edx, 1
je 0x140016f3b
sub edx, 2
je 0x140016f2e
sub edx, 7
je 0x140016ea2
cmp edx, 1
jne 0x1400170bd
mov byte [rsp + 0x21], reloc.ODBC32.dll_SQLGetData
jmp 0x140017085
cmp byte [rsp + 0x20], bl
je 0x140016ee1
movsxd rdx, dword [r13 + 4]
cmp dword [r13], edx
jg 0x140016ebb
xor edx, edx
mov qword [rsp + 0x28], rdx
jmp 0x140016edb
mov rax, qword [r13 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r13 + 4], eax
call fcn.1400303dc
mov r11, qword [rbp + 0x6f]
mov rdx, rax
mov qword [rsp + 0x28], rax
mov r10, qword [rbp + 0x77]
jmp 0x140016ef1
mov edx, dword [r10]
add r10, 8
mov qword [rsp + 0x28], rdx
mov qword [rbp + 0x77], r10
test edx, edx
jns 0x140016f0c
xor eax, eax
mov byte [rbp + 0x7f], 1
mov ecx, edx
neg ecx
cmp edx, 0x80000001
cmovge eax, ecx
mov dword [rsp + 0x28], eax
lea rax, [r11 + 1]
cmp byte [rax], 0x2e
je 0x140017085
cmp byte [rax], 0x6c
je 0x140017085
movsx ecx, byte [rax]
mov qword [rbp + 0x6f], rax
jmp 0x1400170bd
mov dil, 1
mov byte [rsp + 0x24], dil
jmp 0x140017085
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140017085
mov byte [rsp + 0x21], Ordinal_36
jmp 0x140017085
mov r14b, 0x2c
jmp 0x140017085
cmp ecx, 0x2d
je 0x140017081
cmp ecx, 0x2e
je 0x140016fd5
cmp ecx, 0x30
je 0x140016fcb
jle 0x1400170bd
cmp ecx, 0x39
jg 0x140017099
inc r11
lea edx, [rcx - 0x30]
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
cmp ecx, 0x30
jl 0x140016fad
cmp ecx, 0x39
ja 0x140016fa9
lea edx, [rdx + rdx*4]
inc r11
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r11]
cmp ecx, 0x30
jge 0x140016f8f
mov qword [rbp + 0x6f], r11
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x140016fc3
cmp ecx, 0x6c
jne 0x1400170bd
dec r11
jmp 0x140017085
mov byte [rsp + 0x25], 1
jmp 0x140017085
inc r11
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
cmp ecx, 0x2a
jne 0x140017050
cmp byte [rsp + 0x20], bl
je 0x14001701b
movsxd rdx, dword [r13 + 4]
cmp dword [r13], edx
jg 0x140016ffa
xor r12d, r12d
jmp 0x140017015
mov rax, qword [r13 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r13 + 4], eax
call fcn.1400303dc
mov r11, qword [rbp + 0x6f]
mov r12, rax
mov r10, qword [rbp + 0x77]
jmp 0x140017026
mov r12d, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
jns 0x140017040
mov ecx, r12d
or eax, 0xffffffff
neg ecx
cmp r12d, 0x80000001
cmovge eax, ecx
mov r12d, eax
inc r11
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
jmp 0x140016fba
xor edx, edx
cmp ecx, 0x30
jl 0x140017075
cmp ecx, 0x39
ja 0x140017071
lea edx, [rdx + rdx*4]
inc r11
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r11]
cmp ecx, 0x30
jge 0x140017057
mov qword [rbp + 0x6f], r11
btr edx, 0x1f
mov r12d, edx
jmp 0x140016fba
mov byte [rbp + 0x7f], 1
inc r11
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
test ecx, ecx
je 0x1400170bd
jmp 0x140016e5e
cmp ecx, 0x6c
jne 0x1400170bd
inc r11
mov bl, 1
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
cmp ecx, 0x6c
jne 0x1400170bd
inc r11
mov bl, 2
mov qword [rbp + 0x6f], r11
movsx ecx, byte [r11]
lea rax, [0x1400f4fa0]
xor r8d, r8d
mov r13b, 0x11
mov qword [rbp - 0x69], rax
mov r9, rax
mov byte [rsp + 0x23], r13b
mov rdx, rax
lea r11d, [r8 + 6]
movsx eax, byte [rdx]
cmp ecx, eax
je 0x1400170f8
inc r8
lea rax, [0x1400f502a]
add rdx, r11
cmp rdx, rax
jl 0x1400170dd
jmp 0x140017114
lea rax, [r8 + r8*2]
lea rcx, [0x1400f4fa0]
lea r9, [rcx + rax*2]
mov r13b, byte [r9 + 3]
mov byte [rsp + 0x23], r13b
mov qword [rbp - 0x69], r9
movzx ecx, r13b
cmp ecx, 0xa
ja 0x1400179cc
cmp ecx, 9
jae 0x140017a03
test r13b, r13b
je 0x140017bb0
cmp ecx, 3
jbe 0x1400174e4
cmp ecx, 4
je 0x1400174bf
jbe 0x140017f83
cmp ecx, r11d
jbe 0x140017352
cmp ecx, 7
je 0x1400172ec
cmp ecx, 8
jne 0x140017f83
cmp byte [rsp + 0x20], 0
je 0x1400171fe
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017183
xor ecx, ecx
jmp 0x14001719c
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.140030ee0
mov rcx, rax
mov ebx, 1
mov qword [rsp + 0x30], rbx
mov edx, ebx
test rcx, rcx
je 0x1400171f5
mov al, byte [rcx]
mov r9d, 0xc0
mov byte [rbp - 0x59], al
inc rcx
and eax, r9d
cmp al, r9b
jne 0x140017293
mov r8b, byte [rcx]
mov al, r8b
and al, r9b
cmp al, 0x80
jne 0x140017293
inc ebx
mov byte [rbp + rdx - 0x59], r8b
inc rdx
mov qword [rsp + 0x30], rbx
inc rcx
cmp rdx, 4
jl 0x1400171c7
jmp 0x140017293
mov byte [rbp - 0x59], 0
jmp 0x140017293
mov eax, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
cmp eax, 0x80
jae 0x140017217
mov ebx, 1
jmp 0x14001728b
mov r8b, al
mov r9b, 0x3f
and r8b, r9b
mov r10b, 0x80
mov ecx, eax
add r8b, r10b
shr ecx, 6
cmp eax, 0x800
jae 0x140017246
and cl, 0x1f
mov byte [rbp - 0x58], r8b
sub cl, 0x40
mov ebx, 2
mov byte [rbp - 0x59], cl
jmp 0x14001728e
and cl, r9b
mov edx, eax
shr edx, 0xc
add cl, r10b
cmp eax, 0x10000
jae 0x14001726f
and dl, 0xf
mov byte [rbp - 0x58], cl
sub dl, 0x20
mov byte [rbp - 0x57], r8b
mov byte [rbp - 0x59], dl
mov ebx, 3
jmp 0x14001728e
shr eax, 0x12
and dl, r9b
and al, 7
mov byte [rbp - 0x57], cl
sub al, 0x10
mov byte [rbp - 0x56], r8b
add dl, r10b
mov ebx, 4
mov byte [rbp - 0x58], dl
mov byte [rbp - 0x59], al
mov qword [rsp + 0x30], rbx
cmp r12d, 1
jle 0x1400172e3
mov rcx, qword [rsp + 0x28]
mov rsi, qword [rbp + 0x67]
sub ecx, r12d
mov edx, ecx
inc ecx
mov qword [rsp + 0x28], rcx
cmp ecx, 1
jle 0x1400172c9
cmp byte [rbp + 0x7f], 0
jne 0x1400172c9
mov r8b, 0x20
mov rcx, rsi
call fcn.140018104
and dword [rsp + 0x28], 0
lea edi, [r12 - 1]
mov r8d, ebx
lea rdx, [rbp - 0x59]
mov rcx, rsi
call fcn.1400181a0
sub rdi, 1
jne 0x1400172ce
lea r15, [rbp - 0x59]
jmp 0x140017b6a
mov byte [rbp - 0x59], 0x25
mov ebx, 1
lea r15, [rbp - 0x59]
mov rdi, qword [rsp + 0x28]
mov sil, byte [rbp + 0x7f]
mov r12, qword [rbp + 0x67]
sub edi, ebx
mov qword [rsp + 0x28], rdi
test edi, edi
jle 0x140017f28
test sil, sil
jne 0x140017327
mov r8b, 0x20
mov edx, edi
mov rcx, r12
call fcn.140018104
mov r8d, ebx
mov rdx, r15
mov rcx, r12
call fcn.1400181a0
test sil, sil
je 0x140017f36
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, r12
call fcn.140018104
jmp 0x140017f36
cmp byte [rsp + 0x20], 0
je 0x140017390
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x14001736c
xor r15d, r15d
jmp 0x14001738b
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.140030ee0
mov r15, rax
mov r11d, 6
mov r13b, 5
jmp 0x14001739b
mov r15, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r15, r15
jne 0x1400173ac
lea r15, [0x14010acdc]
jmp 0x140017440
cmp r13b, r11b
jne 0x140017440
mov rax, qword [rbp + 0x67]
cmp dword [rax + 0x18], 0
jne 0x14001743c
cmp dword [rax + 0x14], 0
je 0x14001743c
cmp dword [rsp + 0x28], 0
jne 0x14001743c
test r12d, r12d
jns 0x14001743c
cmp byte [rax + 0x1c], 0
jne 0x14001743c
mov r12, rax
mov qword [rax + 8], r15
mov rax, qword [rax]
test rax, rax
je 0x140017401
cmp r15, qword [rax + 0x190]
jb 0x140017401
cmp r15, qword [rax + 0x198]
jae 0x140017401
movzx eax, word [rax + 0x16c]
jmp 0x14001740a
mov rcx, r15
call qword [0x140152b98]
mov dword [r12 + 0x10], eax
or rax, 0xffffffffffffffff
inc rax
cmp byte [r15 + rax], 0
jne 0x140017413
or byte [r12 + 0x1d], 4
btr eax, 0x1f
mov rdi, qword [rsp + 0x28]
xor ebx, ebx
mov sil, byte [rbp + 0x7f]
mov dword [r12 + 0x18], eax
jmp 0x140017306
mov qword [rbp - 0x79], r15
test r12d, r12d
js 0x1400174a8
test sil, sil
je 0x140017479
mov rbx, r15
jmp 0x14001746c
mov al, byte [rbx]
dec r12d
test al, al
je 0x140017471
inc rbx
cmp al, 0xc0
jb 0x14001746c
jmp 0x140017464
inc rbx
mov al, byte [rbx]
and al, 0xc0
cmp al, 0x80
je 0x140017461
test r12d, r12d
jg 0x14001744f
sub ebx, r15d
jmp 0x140017b5a
xor ebx, ebx
movsxd rcx, r12d
xor eax, eax
test r12d, r12d
jle 0x1400172f9
cmp byte [rax + r15], 0
je 0x1400172f9
inc ebx
inc rax
mov qword [rsp + 0x30], rbx
cmp rax, rcx
jl 0x140017489
jmp 0x140017b5f
or rbx, 0xffffffffffffffff
inc rbx
cmp byte [r15 + rbx], 0
jne 0x1400174ac
btr ebx, 0x1f
jmp 0x140017b5a
cmp byte [rsp + 0x20], 0
jne 0x1400174db
mov rax, qword [rbp + 0x67]
add r10, 8
mov qword [rbp + 0x77], r10
mov rcx, qword [r10 - 8]
mov eax, dword [rax + 0x18]
mov dword [rcx], eax
mov r12, qword [rbp + 0x67]
jmp 0x140017f26
cmp byte [rsp + 0x20], 0
je 0x140017517
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x1400174fe
xorps xmm6, xmm6
jmp 0x140017524
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030434
movaps xmm6, xmm0
jmp 0x140017524
movsd xmm6, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
mov ecx, 6
cmovs r12d, ecx
comisd xmm6, xmmword [0x140146b78]
mov qword [rsp + 0x30], r12
jae 0x140017550
xorps xmm6, xmmword [0x140146da0]
mov r9b, 0x2d
mov byte [rsp + 0x21], r9b
jmp 0x140017555
mov r9b, byte [rsp + 0x21]
cmp r13b, 3
jne 0x140017568
test r12d, r12d
je 0x140017568
dec r12d
mov qword [rsp + 0x30], r12
mov eax, 0xcccccccd
mov r8d, r12d
and r8d, 0xfff
mul r8d
mov eax, r8d
shr edx, 3
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub eax, ecx
movsxd rcx, eax
lea rax, [0x140000000]
movsd xmm2, qword [rax + rcx*8 + 0xf5ed0]
cmp r8d, 0xa
jb 0x1400175b0
mov eax, edx
mulsd xmm2, qword [0x140146b90]
sub rax, 1
jne 0x1400175a2
cmp r13b, 1
jne 0x1400175f8
movsd qword [rbp - 0x71], xmm6
mov eax, 0x55555556
mov rcx, qword [rbp - 0x71]
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 0x1400175f4
movaps xmm0, xmm6
mulsd xmm0, qword [0x140146b88]
addsd xmm2, xmm0
addsd xmm6, xmm2
xor esi, esi
movsd qword [rbp - 0x71], xmm6
mov rax, qword [rbp - 0x71]
movabs rcx, 0xfffffffffffff
test rcx, rax
movabs rdx, 0x7ff0000000000000
setne cl
and rax, rdx
cmp rax, rdx
sete al
test al, cl
je 0x140017639
lea r15, [0x14010acd8]
lea ebx, [rsi + 3]
jmp 0x1400172f9
comisd xmm6, xmmword [0x140146b78]
jbe 0x140017707
comisd xmm6, xmmword [0x140146c90]
mov eax, 0x15e
movsd xmm1, qword [0x140146be8]
jb 0x14001767e
cmp esi, eax
jg 0x14001767e
mulsd xmm1, qword [0x140146c90]
add esi, 0x64
movaps xmm0, xmm1
mulsd xmm0, qword [0x140146c90]
comisd xmm6, xmm0
jae 0x14001765e
movaps xmm0, xmm1
jmp 0x14001768d
cmp esi, eax
jg 0x14001769b
movaps xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x140146c60]
comisd xmm6, xmm0
jae 0x140017683
movaps xmm0, xmm1
jmp 0x1400176a9
cmp esi, eax
jg 0x1400176b3
movaps xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x1400176a0
divsd xmm6, xmm1
jmp 0x1400176c4
mulsd xmm6, qword [0x140146c48]
sub esi, 8
comisd xmm6, xmmword [0x140146b98]
jb 0x1400176b9
jmp 0x1400176d6
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x140146be8]
jb 0x1400176d0
cmp esi, eax
jle 0x140017707
xor eax, eax
mov byte [rbp - 0x59], r9b
test r9b, r9b
setne al
neg r9b
mov dword [rbp + rax - 0x59], 0x666e49
sbb eax, eax
neg eax
lea ebx, [rax + 3]
jmp 0x1400172f5
lea rdi, [rbp - 0x59]
mov eax, esi
cmp r13b, 1
je 0x140017764
addsd xmm6, xmm2
comisd xmm6, xmm7
movaps xmm0, xmm6
jb 0x140017728
mulsd xmm6, qword [0x140146bd0]
inc esi
comisd xmm0, xmm7
cmovb esi, eax
cmp r13b, 3
jne 0x140017764
cmp byte [rsp + 0x24], 0
mov rax, qword [rsp + 0x30]
sete r12b
cmp esi, 0xfffffffc
jl 0x14001775a
cmp esi, eax
jg 0x14001775a
sub eax, esi
mov r13b, 1
mov qword [rsp + 0x30], rax
jmp 0x14001775d
mov r13b, 2
mov byte [rsp + 0x23], r13b
jmp 0x14001776e
mov r12b, byte [rsp + 0x22]
mov rax, qword [rsp + 0x30]
movsxd rdx, eax
xor ebx, ebx
cmp r13b, 2
movsxd r13, dword [rsp + 0x28]
cmovne ebx, esi
xor eax, eax
test ebx, ebx
cmovg eax, ebx
add rdx, 0xf
cdqe
add rax, r13
add rdx, rax
cmp rdx, 0x46
jle 0x1400177b1
mov rcx, qword [rbp + 0x67]
call fcn.140016cf8
mov qword [rbp - 0x79], rax
mov rdi, rax
test rax, rax
je 0x140017f83
movzx r8d, byte [rsp + 0x22]
mov rax, qword [rsp + 0x30]
mov r9b, byte [rsp + 0x21]
test eax, eax
mov qword [rbp - 0x71], rdi
setg r15b
lea edx, [r8 + r8*4]
or r15b, r8b
lea r14d, [rdx*2 + 0x10]
or r15b, byte [rsp + 0x24]
test r9b, r9b
je 0x1400177ea
mov byte [rdi], r9b
inc rdi
test ebx, ebx
jns 0x1400177f6
mov byte [rdi], 0x30
inc rdi
jmp 0x140017827
test r14d, r14d
jg 0x1400177ff
mov al, 0x30
jmp 0x140017818
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
sub ebx, 1
jns 0x1400177f6
mov rax, qword [rsp + 0x30]
test r15b, r15b
je 0x140017832
mov byte [rdi], 0x2e
inc rdi
add ebx, 1
jns 0x14001788f
neg ebx
mov dl, 0x30
mov r8d, ebx
mov rcx, rdi
call fcn.1400c2130
mov rax, qword [rsp + 0x30]
add rdi, rbx
mov r9b, byte [rsp + 0x21]
sub eax, ebx
mov r8b, byte [rsp + 0x22]
jmp 0x14001788f
dec eax
mov qword [rsp + 0x30], rax
test r14d, r14d
jg 0x14001786c
mov al, 0x30
jmp 0x140017885
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
mov rax, qword [rsp + 0x30]
test eax, eax
jg 0x14001785c
test r12b, r12b
je 0x1400178cd
test r15b, r15b
je 0x1400178cd
lea rax, [rdi - 1]
jmp 0x1400178ac
mov rdi, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x1400178a3
lea rax, [rdi - 1]
cmp byte [rax], 0x2e
jne 0x1400178cd
test r8b, r8b
je 0x1400178c7
mov byte [rdi], 0x30
inc rdi
jmp 0x1400178cd
mov rdi, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x140017952
mov r11, qword [rbp - 0x69]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [r11 + 4]
mov al, byte [rax + rcx]
mov byte [rdi], al
test esi, esi
jns 0x1400178f9
mov byte [rdi + 1], 0x2d
add rdi, 2
neg esi
jmp 0x140017901
mov byte [rdi + 1], reloc.ODBC32.dll_SQLGetData
add rdi, 2
cmp esi, 0x64
jl 0x140017924
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + 0x30]
mov byte [rdi], al
inc rdi
imul eax, edx, 0xffffff9c
add esi, eax
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
mov byte [rdi + 1], sil
add rdi, 2
mov r15, qword [rbp - 0x71]
mov sil, byte [rbp + 0x7f]
mov byte [rdi], 0
sub edi, r15d
cmp byte [rsp + 0x25], 0
mov ebx, edi
mov rdi, qword [rsp + 0x28]
je 0x140017302
test sil, sil
jne 0x140017302
cmp ebx, edi
jge 0x140017302
mov edx, edi
sub edx, ebx
movsxd r8, edx
cmp r13, r8
jl 0x1400179ac
lea rcx, [r15 + r13]
sub r13, r8
inc r13
mov rax, rcx
sub rax, r8
mov al, byte [rax]
mov byte [rcx], al
dec rcx
sub r13, 1
jne 0x140017999
test edx, edx
je 0x1400179c5
xor ecx, ecx
mov r8d, edx
test r9b, r9b
mov dl, 0x30
setne cl
add rcx, r15
call fcn.1400c2130
mov ebx, edi
jmp 0x140017302
sub ecx, 0xb
je 0x140017ef2
sub ecx, 1
je 0x140017e66
sub ecx, 1
je 0x140017bae
sub ecx, 1
je 0x140017a03
sub ecx, 1
je 0x140017bb0
cmp ecx, 1
jne 0x140017f83
jmp 0x140017bb3
mov eax, Ordinal_36
cmp r13b, 0xe
lea r14d, [rax + 5]
cmove r14d, eax
cmp byte [rsp + 0x20], 0
je 0x140017a49
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017a2e
xor r9d, r9d
jmp 0x140017a5c
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.140030ee0
mov rdi, rax
jmp 0x140017a54
mov rdi, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
mov r9, rdi
test rdi, rdi
jne 0x140017a72
cmp r13b, 0xa
lea rax, str.NULL
lea rdi, [0x14010ace8]
cmove rdi, rax
xor r8d, r8d
xor esi, esi
xor edx, edx
test r12d, r12d
je 0x140017ac9
mov r10b, byte [rsp + 0x22]
mov cl, byte [rdx + rdi]
test cl, cl
je 0x140017ac9
cmp cl, r14b
lea eax, [r8 + 1]
cmovne eax, r8d
mov r8d, eax
test r10b, r10b
je 0x140017abe
and cl, 0xc0
cmp cl, 0xc0
jne 0x140017abe
lea rcx, [rdi + 1]
add rcx, rdx
jmp 0x140017ab6
inc esi
inc rdx
inc rcx
mov al, byte [rcx]
and al, 0xc0
cmp al, 0x80
je 0x140017aae
inc esi
inc rdx
sub r12d, 1
jne 0x140017a83
test r9, r9
je 0x140017adb
cmp r13b, 0xa
jne 0x140017adb
mov ebx, 1
jmp 0x140017add
xor ebx, ebx
lea eax, [rsi + 3]
add eax, r8d
cmp eax, 0x46
jle 0x140017b06
mov rcx, qword [rbp + 0x67]
movsxd rdx, eax
call fcn.140016cf8
mov qword [rbp - 0x79], rax
mov r15, rax
test rax, rax
je 0x140017f83
jmp 0x140017b0a
lea r15, [rbp - 0x59]
xor ecx, ecx
xor eax, eax
test ebx, ebx
je 0x140017b1a
lea ecx, [rax + 1]
mov byte [r15], r14b
mov eax, ecx
xor edx, edx
movsxd r9, esi
test esi, esi
jle 0x140017b46
mov r8b, byte [rdx + rdi]
inc ecx
mov byte [rax + r15], r8b
inc rax
cmp r8b, r14b
jne 0x140017b3e
inc ecx
mov byte [rax + r15], r8b
inc rax
inc rdx
cmp rdx, r9
jl 0x140017b23
test ebx, ebx
je 0x140017b53
inc ecx
mov byte [rax + r15], r14b
inc rax
mov byte [rax + r15], 0
mov ebx, ecx
mov qword [rsp + 0x30], rbx
cmp byte [rsp + 0x22], 0
je 0x1400172f9
mov rdi, qword [rsp + 0x28]
test edi, edi
jle 0x1400172fe
lea eax, [rbx - 1]
movsxd rdx, eax
test eax, eax
js 0x1400172fe
mov rbx, rdi
lea rax, [rdx + r15]
mov cl, byte [rax]
lea eax, [rbx + 1]
and cl, 0xc0
cmp cl, 0x80
cmovne eax, ebx
sub rdx, 1
mov ebx, eax
jns 0x140017b88
mov rbx, qword [rsp + 0x30]
mov edi, eax
jmp 0x1400172fe
mov bl, 2
xor r14b, r14b
test byte [r9 + 2], 1
je 0x140017c32
cmp byte [rsp + 0x20], 0
je 0x140017bf3
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017bda
xor ebx, ebx
mov cl, byte [rsp + 0x21]
jmp 0x140017c89
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.1400303dc
mov rbx, rax
jmp 0x140017c12
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x140017c0a
cmp bl, 2
jne 0x140017c0e
mov rbx, qword [r10 - 8]
jmp 0x140017c12
mov qword [rbp + 0x77], r10
movsxd rbx, dword [r10 - 8]
test rbx, rbx
jns 0x140017bd1
movabs rax, 0x8000000000000000
cmp rbx, rax
jne 0x140017c2b
mov rbx, rax
jmp 0x140017c2e
neg rbx
mov cl, 0x2d
jmp 0x140017c85
cmp byte [rsp + 0x20], 0
je 0x140017c64
mov r8, qword [rsp + 0x38]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017c4b
xor ebx, ebx
jmp 0x140017c83
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.1400303dc
mov rbx, rax
jmp 0x140017c83
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x140017c7b
cmp bl, 2
jne 0x140017c7f
mov rbx, qword [r10 - 8]
jmp 0x140017c83
mov qword [rbp + 0x77], r10
mov ebx, dword [r10 - 8]
xor cl, cl
mov byte [rsp + 0x21], cl
mov rax, rbx
neg rax
sbb sil, sil
and sil, dil
cmp byte [rsp + 0x25], 0
je 0x140017cb0
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 0x140017cc1
mov edi, Ordinal_73
lea r10, [rbp - 0x59]
jmp 0x140017cfd
movsxd rdi, r12d
add rdi, 0xa
test r14b, r14b
je 0x140017ce1
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.140016cf8
mov qword [rbp - 0x79], rax
mov r10, rax
test rax, rax
je 0x140017f83
lea eax, [rdi - 1]
movsxd r15, eax
add r15, r10
cmp r13b, 0xf
jne 0x140017d78
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 0x140017d4e
mov rax, r9
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140017d51
xor r8d, r8d
lea eax, [r8 + r8]
movsxd rcx, eax
lea rdx, [0x140000000]
mov al, byte [rcx + rdx + 0xf1a99]
mov cl, byte [rcx + rdx + 0xf1a98]
mov byte [r15 - 1], al
sub r15, 2
mov byte [r15], cl
mov r11, qword [rbp - 0x69]
lea rax, str.0123456789ABCDEF0123456789abcdef
movzx ecx, byte [r11 + 4]
movzx r8d, byte [r11 + 1]
add rcx, rax
xor edx, edx
mov rax, rbx
div r8
dec r15
mov rbx, rax
mov al, byte [rcx + rdx]
mov byte [r15], al
test rbx, rbx
jne 0x140017d90
mov eax, r10d
lea ecx, [rdi - 1]
sub eax, r15d
add ecx, eax
cmp ecx, r12d
jge 0x140017dcf
sub r12d, ecx
mov eax, r12d
add ecx, r12d
dec r15
mov byte [r15], 0x30
sub rax, 1
jne 0x140017dc2
test r14b, r14b
je 0x140017e21
dec ecx
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
movsxd r8, edx
sub r15, r8
lea eax, [rdx + rdx*2]
sub ecx, eax
xor edx, edx
lea r9d, [rcx + 1]
jmp 0x140017e1c
lea rax, [rdx + r8]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
sub r9d, 1
jne 0x140017e19
inc rdx
mov r9d, 3
dec r8
mov byte [rdx + r15], r14b
inc rdx
test r8, r8
jg 0x140017df7
mov al, byte [rsp + 0x21]
test al, al
je 0x140017e2f
dec r15
mov byte [r15], al
test sil, sil
je 0x140017e58
movzx eax, byte [r11 + 5]
test al, al
je 0x140017e58
lea rcx, [0x1400eeaf8]
add rax, rcx
jmp 0x140017e52
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x140017e49
sub r10d, r15d
lea ebx, [rdi - 1]
add ebx, r10d
jmp 0x1400172f9
mov r12, qword [rbp + 0x67]
test byte [r12 + 0x1d], 1
je 0x140017f83
mov rdi, qword [r10]
lea rsi, [r10 + 0x10]
movsxd rax, dword [rsi - 8]
imul rbx, rax, 0x70
mov rdx, qword [rbx + rdi + 0x10]
test rdx, rdx
je 0x140017ec1
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017e93
and eax, 0x3fffffff
mov rcx, r12
mov r8d, eax
call fcn.1400181a0
mov r8d, 1
lea rdx, [0x14010acf0]
mov rcx, r12
call fcn.1400181a0
mov rdx, qword [rbx + rdi + 0x18]
test rdx, rdx
jne 0x140017ecf
xor eax, eax
jmp 0x140017ee1
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017ed3
and eax, 0x3fffffff
mov r8d, eax
mov rcx, r12
call fcn.1400181a0
mov qword [rbp + 0x77], rsi
jmp 0x140017f26
mov r12, qword [rbp + 0x67]
test byte [r12 + 0x1d], 1
je 0x140017f83
mov rdx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test rdx, rdx
je 0x140017f26
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x140017f26
mov rdx, qword [rdx]
mov rcx, r12
call fcn.1400181a0
xor ebx, ebx
mov r8d, ebx
mov rdx, r15
mov rcx, r12
call fcn.1400181a0
mov rcx, qword [rbp - 0x79]
test rcx, rcx
je 0x140017f51
mov rdx, rcx
mov rcx, qword [r12]
call fcn.1400166f0
xor eax, eax
mov qword [rbp - 0x79], rax
mov r11, qword [rbp + 0x6f]
inc r11
movsx eax, byte [r11]
test eax, eax
je 0x140017f83
mov r10, qword [rbp + 0x77]
mov r13, qword [rsp + 0x38]
jmp 0x140016de2
mov r8d, 1
lea rdx, [0x14010acd4]
mov rcx, r12
call fcn.1400181a0
lea r11, [rsp + 0xd8]
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