Function at 0x1400169fc
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 0x140016a5d
mov rax, qword [r10]
add r10, 8
mov byte [rsp + 0x21], 1
mov qword [rsp + 0x40], rax
mov qword [rbp + 0x77], r10
jmp 0x140016a61
mov byte [rsp + 0x21], al
movsx eax, byte [rdx]
test eax, eax
je 0x140017baf
movsd xmm7, qword [0x14013d2f8]
cmp eax, 0x25
je 0x140016aab
mov r15, r13
inc r13
mov al, byte [r13]
test al, al
je 0x140016a8b
cmp al, 0x25
jne 0x140016a7c
mov r8d, r13d
mov rdx, r15
mov rcx, rsi
sub r8d, r15d
call fcn.140017d78
cmp byte [r13], 0
je 0x140017baf
mov r10, qword [rbp + 0x77]
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
test ecx, ecx
je 0x140017b9a
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 0x140016be0
je 0x140016bd8
mov edx, ecx
sub edx, 0x20
je 0x140016bce
dec edx
je 0x140016bc1
sub edx, 2
je 0x140016bb4
sub edx, 7
je 0x140016b2d
dec edx
jne 0x140016d4c
mov byte [rsp + 0x20], reloc.ODBC32.dll_SQLGetData
jmp 0x140016d11
cmp byte [rsp + 0x21], 0
je 0x140016b6d
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140016b4b
xor edx, edx
mov qword [rsp + 0x28], rdx
jmp 0x140016b67
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030298
mov rdx, rax
mov qword [rsp + 0x28], rax
mov r10, qword [rbp + 0x77]
jmp 0x140016b7d
mov edx, dword [r10]
add r10, 8
mov qword [rsp + 0x28], rdx
mov qword [rbp + 0x77], r10
test edx, edx
jns 0x140016b98
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 0x140016d11
cmp eax, 0x6c
jne 0x140016d40
jmp 0x140016d11
mov dil, 1
mov byte [rsp + 0x30], dil
jmp 0x140016d11
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140016d11
mov byte [rsp + Ordinal_36], 0x20
jmp 0x140016d11
mov r14b, 0x2c
jmp 0x140016d11
cmp ecx, 0x2d
je 0x140016d0d
cmp ecx, 0x2e
je 0x140016c5d
cmp ecx, 0x30
je 0x140016c53
jle 0x140016d4c
cmp ecx, 0x39
jg 0x140016d26
inc r13
lea edx, [rcx - 0x30]
movsx ecx, byte [r13]
mov qword [rbp + 0x6f], r13
cmp ecx, 0x30
jl 0x140016c35
cmp ecx, 0x39
jg 0x140016c31
lea edx, [rdx + rdx*4]
inc r13
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r13]
cmp ecx, 0x30
jge 0x140016c16
mov qword [rbp + 0x6f], r13
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x140016c4b
cmp ecx, 0x6c
jne 0x140016d4c
dec r13
jmp 0x140016d11
mov byte [rsp + 0x31], 1
jmp 0x140016d11
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
cmp ecx, 0x2a
jne 0x140016cdb
cmp byte [rsp + 0x21], 0
je 0x140016ca5
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140016c88
xor r12d, r12d
jmp 0x140016c9f
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030298
mov r12, rax
mov r10, qword [rbp + 0x77]
jmp 0x140016cb0
mov r12d, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r12d, r12d
jns 0x140016cca
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 0x140016c42
xor edx, edx
cmp ecx, 0x30
jl 0x140016d01
cmp ecx, 0x39
jg 0x140016cfd
lea edx, [rdx + rdx*4]
inc r13
lea edx, [rdx - 0x18]
lea edx, [rcx + rdx*2]
movsx ecx, byte [r13]
cmp ecx, 0x30
jge 0x140016ce2
mov qword [rbp + 0x6f], r13
btr edx, 0x1f
mov r12d, edx
jmp 0x140016c42
mov byte [rbp + 0x7f], 1
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
test ecx, ecx
je 0x140016d4c
jmp 0x140016aeb
cmp ecx, 0x6c
jne 0x140016d4c
inc r13
mov bl, 1
movsx ecx, byte [r13]
mov qword [rbp + 0x6f], r13
cmp ecx, 0x6c
jne 0x140016d4c
mov bl, 2
inc r13
mov qword [rbp + 0x6f], r13
movsx ecx, byte [r13]
lea rax, [0x1400e5e00]
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 0x140016d87
lea rax, [0x1400e5e8a]
add rdx, r11
inc r8
cmp rdx, rax
jl 0x140016d6c
jmp 0x140016da3
lea rax, [r8 + r8*2]
lea rcx, [0x1400e5e00]
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 0x140017635
cmp ecx, 9
jge 0x140017667
test r13b, r13b
je 0x1400177ef
test ecx, ecx
jle 0x140017baf
cmp ecx, 3
jle 0x140017151
cmp ecx, 4
je 0x140017121
jle 0x140017baf
cmp ecx, r11d
jle 0x140016fee
cmp ecx, 7
je 0x140016f88
cmp ecx, 8
jne 0x140017baf
cmp byte [rsp + 0x21], 0
je 0x140016e82
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140016e16
xor ecx, ecx
jmp 0x140016e2f
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.140030c84
mov rcx, rax
mov ebx, 1
mov edx, ebx
test rcx, rcx
je 0x140016e79
movsx eax, byte [rcx]
inc rcx
mov byte [rbp - 0x69], al
and eax, 0xc0
cmp al, 0xc0
jne 0x140016f2a
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x140016f2a
mov byte [rbp + rdx - 0x69], r8b
inc rdx
inc ebx
inc rcx
cmp rdx, 4
jl 0x140016e51
jmp 0x140016f2a
mov byte [rbp - 0x69], 0
jmp 0x140016f2a
mov ecx, dword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
cmp ecx, 0x80
jae 0x140016ea2
mov byte [rbp - 0x69], cl
mov ebx, 1
jmp 0x140016f2a
mov eax, ecx
cmp ecx, 0x800
jae 0x140016ec6
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 0x140016f2a
cmp ecx, 0x10000
jae 0x140016ef4
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 0x140016f2a
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 0x140016f7f
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 0x140016f66
cmp byte [rbp + 0x7f], 0
jne 0x140016f66
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r15
call fcn.140017cdc
and dword [rsp + 0x28], 0
lea edi, [r12 - 1]
lea rdx, [rbp - 0x69]
mov r8d, ebx
mov rcx, r15
call fcn.140017d78
dec rdi
jne 0x140016f6b
lea r15, [rbp - 0x69]
jmp 0x1400177b9
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 0x140017b57
test r14b, r14b
jne 0x140016fc3
mov r8b, 0x20
mov edx, edi
mov rcx, rsi
call fcn.140017cdc
mov r8d, ebx
mov rdx, r15
mov rcx, rsi
call fcn.140017d78
test r14b, r14b
je 0x140017b65
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.140017cdc
jmp 0x140017b65
cmp byte [rsp + 0x21], 0
je 0x14001702c
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017008
xor r15d, r15d
jmp 0x140017027
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.140030c84
mov r11d, 6
mov r15, rax
mov r13b, 5
jmp 0x140017037
mov r15, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test r15, r15
jne 0x140017045
lea r15, [0x1400ff10c]
jmp 0x1400170a7
cmp r13b, r11b
jne 0x1400170a7
mov rax, qword [rbp + 0x67]
cmp dword [rax + 0x18], 0
jne 0x14001709f
cmp dword [rax + 0x14], 0
je 0x14001709f
cmp dword [rsp + 0x28], 0
jne 0x14001709f
test r12d, r12d
jns 0x14001709f
cmp byte [rax + 0x1c], 0
jne 0x14001709f
mov rcx, qword [rax]
mov rdx, r15
mov rsi, rax
mov qword [rax + 8], r15
call fcn.1400162f4
mov dword [rsi + 0x10], eax
or rax, 0xffffffffffffffff
inc rax
cmp byte [r15 + rax], 0
jne 0x140017085
btr eax, 0x1f
or byte [rsi + 0x1d], 4
mov dword [rsi + 0x18], eax
jmp 0x140017141
mov rax, r15
mov qword [rsp + 0x48], rax
test r12d, r12d
js 0x14001710a
test sil, sil
je 0x1400170e0
mov rbx, r15
jmp 0x1400170d3
mov al, byte [rbx]
dec r12d
test al, al
je 0x1400170d8
inc rbx
cmp al, 0xc0
jb 0x1400170d3
jmp 0x1400170cb
inc rbx
mov al, byte [rbx]
and al, 0xc0
cmp al, 0x80
je 0x1400170c8
test r12d, r12d
jg 0x1400170b6
sub ebx, r15d
jmp 0x1400177ae
xor ebx, ebx
xor eax, eax
movsxd rcx, r12d
test r12d, r12d
jle 0x140016f95
cmp byte [rax + r15], 0
je 0x140016f95
inc rax
inc ebx
cmp rax, rcx
jl 0x1400170f0
jmp 0x1400177ae
or rbx, 0xffffffffffffffff
inc rbx
cmp byte [r15 + rbx], 0
jne 0x14001710e
btr ebx, 0x1f
jmp 0x1400177ae
cmp byte [rsp + 0x21], 0
mov rsi, qword [rbp + 0x67]
jne 0x14001713c
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 0x140016fa2
cmp byte [rsp + 0x21], 0
je 0x140017184
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x14001716b
xorps xmm6, xmm6
jmp 0x140017191
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.1400302f0
movaps xmm6, xmm0
jmp 0x140017191
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 [0x14013d278]
jae 0x1400171bd
xorps xmm6, xmmword [0x14013d4a0]
mov r9b, 0x2d
mov byte [rsp + 0x20], r9b
jmp 0x1400171c2
mov r9b, byte [rsp + 0x20]
cmp r13b, 3
jne 0x1400171d5
test r12d, r12d
jle 0x1400171d5
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 + 0xe9e60]
cmp r8d, 0xa
jl 0x14001722e
mov eax, 0xcccccccd
mul r8d
shr edx, 3
mov eax, edx
mulsd xmm2, qword [0x14013d290]
dec rax
jne 0x140017221
cmp r13b, 1
jne 0x140017276
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 0x140017272
movaps xmm0, xmm6
mulsd xmm0, qword [0x14013d288]
addsd xmm2, xmm0
addsd xmm6, xmm2
movaps xmm0, xmm6
xor esi, esi
call fcn.140018a68
test eax, eax
je 0x140017293
lea r15, [0x1400ff108]
lea ebx, [rsi + 3]
jmp 0x140016f95
comisd xmm6, xmmword [0x14013d278]
jbe 0x140017367
comisd xmm6, xmmword [0x14013d398]
movsd xmm1, qword [0x14013d2e8]
mov r12d, 0x15e
jb 0x1400172da
cmp esi, r12d
jg 0x1400172da
mulsd xmm1, qword [0x14013d398]
add esi, 0x64
movaps xmm0, xmm1
mulsd xmm0, qword [0x14013d398]
comisd xmm6, xmm0
jae 0x1400172b9
movaps xmm0, xmm1
jmp 0x1400172ea
cmp esi, r12d
jg 0x1400172f8
movaps xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x14013d368]
comisd xmm6, xmm0
jae 0x1400172df
movaps xmm0, xmm1
jmp 0x140017307
cmp esi, r12d
jg 0x140017311
movaps xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x1400172fd
divsd xmm6, xmm1
jmp 0x140017322
mulsd xmm6, qword [0x14013d350]
sub esi, 8
comisd xmm6, xmmword [0x14013d298]
jb 0x140017317
jmp 0x140017334
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x14013d2e8]
jb 0x14001732e
cmp esi, r12d
jle 0x140017367
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 0x140016f91
lea rdi, [rbp - 0x69]
cmp r13b, 1
je 0x140017385
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140017385
mulsd xmm6, qword [0x14013d2d0]
inc esi
mov rax, qword [rsp + 0x38]
cmp r13b, 3
jne 0x140017446
cmp byte [rsp + 0x30], 0
sete r12b
cmp esi, 0xfffffffc
jl 0x14001743f
cmp esi, eax
jg 0x14001743f
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 0x1400173fa
mov r15, qword [rbp + 0x67]
mov rcx, r15
call fcn.14001698c
mov qword [rsp + 0x48], rax
mov rdi, rax
test rax, rax
je 0x140017baf
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 0x140017433
mov byte [rdi], r9b
inc rdi
test ebx, ebx
jns 0x14001745f
mov byte [rdi], 0x30
inc rdi
jmp 0x14001748f
mov byte [rsp + 0x23], 2
jmp 0x140017458
mov r9b, byte [rsp + 0x22]
mov r12b, r9b
cmp r13b, 2
jne 0x1400173ba
xor ebx, ebx
jmp 0x1400173bc
test r14d, r14d
jg 0x140017468
mov al, 0x30
jmp 0x140017481
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 0x14001745f
mov rax, qword [rsp + 0x38]
test r15b, r15b
je 0x14001749a
mov byte [rdi], 0x2e
inc rdi
inc ebx
jns 0x1400174f6
neg ebx
mov dl, 0x30
mov rcx, rdi
mov r8d, ebx
call fcn.1400c6610
mov rax, qword [rsp + 0x38]
mov r9b, byte [rsp + 0x20]
mov r8b, byte [rsp + 0x22]
add rdi, rbx
sub eax, ebx
jmp 0x1400174f6
dec eax
mov qword [rsp + 0x38], rax
test r14d, r14d
jg 0x1400174d3
mov al, 0x30
jmp 0x1400174ec
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 0x1400174c3
test r12b, r12b
je 0x140017534
test r15b, r15b
je 0x140017534
lea rax, [rdi - 1]
jmp 0x140017513
mov rdi, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x14001750a
lea rax, [rdi - 1]
cmp byte [rax], 0x2e
jne 0x140017534
test r8b, r8b
je 0x14001752e
mov byte [rdi], 0x30
inc rdi
jmp 0x140017534
mov rdi, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x1400175b9
mov r11, qword [rbp - 0x79]
lea rcx, [0x1400ea160]
movzx eax, byte [r11 + 4]
mov al, byte [rax + rcx]
mov byte [rdi], al
test esi, esi
jns 0x140017560
mov byte [rdi + 1], 0x2d
add rdi, 2
neg esi
jmp 0x140017568
mov byte [rdi + 1], reloc.ODBC32.dll_SQLGetData
add rdi, 2
cmp esi, 0x64
jl 0x14001758b
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
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 0x140016f9e
test r14b, r14b
jne 0x140016f9e
cmp ebx, edi
jge 0x140016f9e
mov edx, edi
sub edx, ebx
movsxd rax, edx
cmp r13, rax
jl 0x140017614
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 0x140017606
test edx, edx
je 0x14001762e
xor eax, eax
test r9b, r9b
mov r8d, edx
setne al
mov dl, 0x30
lea rcx, [rax + r15]
call fcn.1400c6610
mov ebx, edi
jmp 0x140016f9e
sub ecx, 0xb
je 0x140017b27
dec ecx
je 0x140017a9a
dec ecx
je 0x1400177ed
dec ecx
je 0x140017667
dec ecx
je 0x1400177ef
dec ecx
jne 0x140017baf
jmp 0x1400177f2
mov eax, Ordinal_36
cmp r13b, 0xe
lea r14d, [rax + 5]
cmove r14d, eax
cmp byte [rsp + 0x21], 0
je 0x1400176ac
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017691
xor ebx, ebx
jmp 0x1400176b7
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.140030c84
mov rbx, rax
jmp 0x1400176b7
mov rbx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
xor edx, edx
test rbx, rbx
sete dl
test edx, edx
je 0x1400176d9
lea rax, str.NULL
lea rbx, [0x1400ff118]
cmp r13b, 0xa
cmove rbx, rax
xor r8d, r8d
xor esi, esi
xor ecx, ecx
test r12d, r12d
je 0x14001771f
mov r9b, byte [rsp + 0x22]
mov al, byte [rcx + rbx]
test al, al
je 0x14001771f
cmp al, r14b
jne 0x1400176f9
inc r8d
test r9b, r9b
je 0x140017715
and al, 0xc0
cmp al, 0xc0
jne 0x140017715
jmp 0x14001770b
inc esi
inc rcx
mov al, byte [rbx + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x140017706
inc esi
inc rcx
dec r12d
jne 0x1400176ea
test edx, edx
jne 0x14001772e
cmp r13b, 0xa
jne 0x14001772e
lea edi, [rdx + 1]
jmp 0x140017730
xor edi, edi
lea eax, [rsi + 3]
add eax, r8d
cmp eax, 0x46
jle 0x14001775a
mov rcx, qword [rbp + 0x67]
movsxd rdx, eax
call fcn.14001698c
mov qword [rsp + 0x48], rax
mov r15, rax
test rax, rax
je 0x140017baf
jmp 0x14001775e
lea r15, [rbp - 0x69]
xor ecx, ecx
xor eax, eax
test edi, edi
je 0x14001776e
lea ecx, [rax + 1]
mov byte [r15], r14b
mov eax, ecx
xor edx, edx
movsxd r9, esi
test esi, esi
jle 0x14001779a
mov r8b, byte [rdx + rbx]
inc ecx
mov byte [rax + r15], r8b
inc rax
cmp r8b, r14b
jne 0x140017792
mov byte [rax + r15], r8b
inc ecx
inc rax
inc rdx
cmp rdx, r9
jl 0x140017777
test edi, edi
je 0x1400177a7
mov byte [rax + r15], r14b
inc ecx
inc rax
mov byte [rax + r15], 0
mov ebx, ecx
cmp byte [rsp + 0x22], 0
je 0x140016f95
mov rdi, qword [rsp + 0x28]
test edi, edi
jle 0x140016f9a
lea eax, [rbx - 1]
movsxd rcx, eax
test eax, eax
js 0x140016f9a
mov al, byte [rcx + r15]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x1400177e3
inc edi
test rcx, rcx
jns 0x1400177d4
jmp 0x140016f9a
mov bl, 2
xor r14b, r14b
test byte [r9 + 2], 1
je 0x14001786d
cmp byte [rsp + 0x21], 0
je 0x140017832
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017819
xor ebx, ebx
mov cl, byte [rsp + 0x20]
jmp 0x1400178c0
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030298
mov rbx, rax
jmp 0x14001784d
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x140017849
cmp bl, 2
jne 0x140017849
mov rbx, qword [r10 - 8]
jmp 0x14001784d
movsxd rbx, dword [r10 - 8]
test rbx, rbx
jns 0x140017810
movabs rax, 0x8000000000000000
cmp rbx, rax
jne 0x140017866
mov rbx, rax
jmp 0x140017869
neg rbx
mov cl, 0x2d
jmp 0x1400178bc
cmp byte [rsp + 0x21], 0
je 0x14001789f
mov r8, qword [rsp + 0x40]
movsxd rdx, dword [r8 + 4]
cmp dword [r8], edx
jg 0x140017886
xor ebx, ebx
jmp 0x1400178ba
mov rax, qword [r8 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r8 + 4], eax
call fcn.140030298
mov rbx, rax
jmp 0x1400178ba
add r10, 8
mov qword [rbp + 0x77], r10
test bl, bl
je 0x1400178b6
cmp bl, 2
jne 0x1400178b6
mov rbx, qword [r10 - 8]
jmp 0x1400178ba
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 0x1400178e7
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 0x1400178f8
mov edi, Ordinal_73
lea r10, [rbp - 0x69]
jmp 0x140017935
movsxd rdi, r12d
add rdi, 0xa
test r14b, r14b
je 0x140017918
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.14001698c
mov qword [rsp + 0x48], rax
mov r10, rax
test rax, rax
je 0x140017baf
lea eax, [rdi - 1]
movsxd r15, eax
add r15, r10
cmp r13b, 0xf
jne 0x1400179ac
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 0x140017986
mov rax, r9
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140017989
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r15, 2
mov al, byte [rdx + rcx*2 + 0xe78d1]
mov cl, byte [rdx + rcx*2 + 0xe78d0]
mov byte [r15 + 1], al
mov byte [r15], cl
mov r11, qword [rbp - 0x79]
lea rax, [0x1400ea160]
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 0x1400179c4
mov eax, r10d
lea ecx, [rdi - 1]
sub eax, r15d
add ecx, eax
cmp r12d, ecx
jle 0x140017a02
sub r12d, ecx
mov eax, r12d
add ecx, r12d
dec r15
mov byte [r15], 0x30
dec rax
jne 0x1400179f6
test r14b, r14b
je 0x140017a53
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 0x140017a4e
lea rax, [rdx + r8]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
dec r9d
jne 0x140017a4b
inc rdx
mov r9d, 3
dec r8
mov byte [rdx + r15], r14b
inc rdx
test r8, r8
jg 0x140017a2a
mov al, byte [rsp + 0x20]
test al, al
je 0x140017a61
dec r15
mov byte [r15], al
test sil, sil
je 0x140017a8c
mov al, byte [r11 + 5]
test al, al
je 0x140017a8c
lea rcx, [0x1400e90ac]
movzx eax, al
add rax, rcx
jmp 0x140017a86
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x140017a7d
lea ebx, [rdi - 1]
sub r10d, r15d
add ebx, r10d
jmp 0x140016f95
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x140017baf
mov rbx, qword [r10]
movsxd rax, dword [r10 + 8]
add r10, 0x10
mov qword [rbp + 0x77], r10
imul rdi, rax, 0x70
mov rdx, qword [rdi + rbx + 0x10]
test rdx, rdx
je 0x140017af7
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017ac9
and eax, 0x3fffffff
mov rcx, rsi
mov r8d, eax
call fcn.140017d78
lea rdx, [0x1400ff120]
mov r8d, 1
mov rcx, rsi
call fcn.140017d78
mov rdx, qword [rdi + rbx + 0x18]
test rdx, rdx
jne 0x140017b05
xor eax, eax
jmp 0x140017b17
or rax, 0xffffffffffffffff
inc rax
cmp byte [rdx + rax], 0
jne 0x140017b09
and eax, 0x3fffffff
mov r8d, eax
mov rcx, rsi
call fcn.140017d78
jmp 0x14001713c
mov rsi, qword [rbp + 0x67]
test byte [rsi + 0x1d], 1
je 0x140017baf
mov rdx, qword [r10]
add r10, 8
mov qword [rbp + 0x77], r10
test rdx, rdx
je 0x14001713c
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x14001713c
mov rdx, qword [rdx]
jmp 0x140017b1a
mov r8d, ebx
mov rdx, r15
mov rcx, rsi
call fcn.140017d78
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140017b81
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.140016390
xor eax, eax
mov qword [rsp + 0x48], rax
mov r13, qword [rbp + 0x6f]
inc r13
movsx eax, byte [r13]
test eax, eax
je 0x140017baf
mov r10, qword [rbp + 0x77]
jmp 0x140016a74
lea rdx, [0x1400ff104]
mov r8d, 1
mov rcx, rsi
call fcn.140017d78
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