Function at 0x140017068
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 0x1400170cb
mov r12, qword [r9]
add r9, 8
mov byte [rsp + 0x20], 1
mov qword [rsp + 0x40], r12
mov qword [rax + 0x18], r9
jmp 0x1400170cf
mov byte [rsp + 0x20], cl
movsx eax, byte [rdx]
test eax, eax
je 0x14001822f
movsd xmm13, qword [0x1401300c0]
movsd xmm7, qword [0x140130100]
cmp eax, 0x25
je 0x140017122
mov r15, rdi
inc rdi
mov al, byte [rdi]
test al, al
je 0x140017100
cmp al, 0x25
jne 0x1400170f3
mov r8d, edi
mov rdx, r15
mov rcx, rsi
sub r8d, r15d
call fcn.140018414
cmp byte [rdi], 0
je 0x14001822f
mov r9, qword [rsp + 0x150]
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x14001821a
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 0x140017255
je 0x14001724d
mov edx, ecx
sub edx, 0x20
je 0x140017243
sub edx, 1
je 0x140017236
sub edx, 2
je 0x140017229
sub edx, 7
je 0x1400171ac
cmp edx, 1
jne 0x1400173ba
mov byte [rsp + 0x21], 0x2b
jmp 0x140017379
cmp byte [rsp + 0x20], 0
je 0x1400171cd
mov rcx, r12
call fcn.140016fc8
mov r9, qword [rsp + 0x150]
mov rdx, rax
mov qword [rsp + 0x28], rax
jmp 0x1400171e1
mov edx, dword [r9]
add r9, 8
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x150], r9
test edx, edx
jns 0x140017200
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 0x140017379
cmp eax, 0x6c
je 0x140017379
mov qword [rsp + 0x148], rcx
movsx ecx, byte [rcx]
jmp 0x1400173ba
mov r13b, 1
mov byte [rsp + 0x30], r13b
jmp 0x140017379
mov sil, 1
mov byte [rsp + 0x22], sil
jmp 0x140017379
mov byte [rsp + 0x21], 0x20
jmp 0x140017379
mov bpl, 0x2c
jmp 0x140017379
cmp ecx, 0x2d
je 0x140017371
cmp ecx, 0x2e
je 0x1400172d4
cmp ecx, 0x30
je 0x1400172ca
jle 0x1400173ba
cmp ecx, 0x39
jg 0x140017390
inc rdi
lea edx, [rcx - 0x30]
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x30
jl 0x1400172ac
cmp ecx, 0x39
jg 0x1400172a4
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x14001728d
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x1400172c2
cmp ecx, 0x6c
jne 0x1400173ba
dec rdi
jmp 0x140017379
mov byte [rsp + 0x24], 1
jmp 0x140017379
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
cmp ecx, 0x2a
jne 0x14001733f
cmp byte [rsp + 0x20], 0
je 0x140017303
mov rcx, r12
call fcn.140016fc8
mov r9, qword [rsp + 0x150]
mov r14, rax
jmp 0x140017312
mov r14d, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r14d, r14d
jns 0x14001732c
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 0x1400172b9
xor edx, edx
cmp ecx, 0x30
jl 0x140017365
cmp ecx, 0x39
jg 0x14001735d
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x140017346
mov qword [rsp + 0x148], rdi
btr edx, 0x1f
mov r14d, edx
jmp 0x1400172b9
mov byte [rsp + 0x158], 1
inc rdi
mov qword [rsp + 0x148], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x1400173ba
jmp 0x140017168
cmp ecx, 0x6c
jne 0x1400173ba
inc rdi
mov bl, 1
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
cmp ecx, 0x6c
jne 0x1400173ba
inc rdi
mov bl, 2
movsx ecx, byte [rdi]
mov qword [rsp + 0x148], rdi
lea r11, [0x1400d6810]
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 0x1400173f5
lea rax, [0x1400d689a]
add rdx, r10
inc rdi
cmp rdx, rax
jl 0x1400173da
jmp 0x14001740b
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 0x140017ccf
cmp ecx, 9
jge 0x140017d06
test r12b, r12b
je 0x140017e94
test ecx, ecx
jle 0x14001822f
cmp ecx, 3
jle 0x1400177f3
cmp ecx, 4
je 0x1400177b8
jle 0x14001822f
cmp ecx, r10d
jle 0x140017679
cmp ecx, 7
je 0x140017609
cmp ecx, 8
jne 0x14001822f
cmp byte [rsp + 0x20], 0
je 0x1400174eb
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14001747d
xor ecx, ecx
jmp 0x140017495
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.140031c84
mov rcx, rax
mov edi, 1
mov rdx, rdi
test rcx, rcx
je 0x1400174e1
movsx eax, byte [rcx]
inc rcx
mov byte [rsp + 0x60], al
and eax, 0xc0
cmp al, 0xc0
jne 0x1400175a1
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x1400175a1
mov byte [rsp + rdx + 0x60], r8b
inc rdx
inc edi
inc rcx
cmp rdx, 4
jl 0x1400174b9
jmp 0x1400175a1
mov byte [rsp + 0x60], 0
jmp 0x1400175a1
mov ecx, dword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
cmp ecx, 0x80
jae 0x140017510
mov byte [rsp + 0x60], cl
mov edi, 1
jmp 0x1400175a1
mov eax, ecx
cmp ecx, 0x800
jae 0x140017536
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 0x1400175a1
cmp ecx, 0x10000
jae 0x140017567
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 0x1400175a1
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 0x1400175ff
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 0x1400175e5
cmp byte [rsp + 0x158], 0
jne 0x1400175e5
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r15
call fcn.140018378
and dword [rsp + 0x28], 0
lea ebx, [r14 - 1]
lea rdx, [rsp + 0x60]
mov r8d, edi
mov rcx, r15
call fcn.140018414
sub rbx, 1
jne 0x1400175e9
lea r15, [rsp + 0x60]
jmp 0x140017e5c
mov byte [rsp + 0x60], 0x25
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 0x1400181cc
test bl, bl
jne 0x14001764f
mov r8b, 0x20
mov edx, r13d
mov rcx, rsi
call fcn.140018378
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.140018414
test bl, bl
je 0x1400181da
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, rsi
call fcn.140018378
jmp 0x1400181da
cmp byte [rsp + 0x20], 0
je 0x1400176b5
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140017692
xor r15d, r15d
jmp 0x1400176b0
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.140031c84
mov r10d, 6
mov r15, rax
mov r12b, 5
jmp 0x1400176c4
mov r15, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test r15, r15
jne 0x1400176d2
lea r15, [0x1400f386c]
jmp 0x14001773b
cmp r12b, r10b
jne 0x14001773b
mov rax, qword [rsp + 0x140]
cmp dword [rax + 0x18], 0
jne 0x140017733
cmp dword [rax + 0x14], 0
je 0x140017733
cmp dword [rsp + 0x28], 0
jne 0x140017733
test r14d, r14d
jns 0x140017733
cmp byte [rax + 0x1c], 0
jne 0x140017733
mov rcx, qword [rax]
mov rdx, r15
mov rsi, rax
mov qword [rax + 8], r15
call fcn.140016904
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 0x1400177e0
mov rax, r15
mov qword [rsp + 0x48], rax
test r14d, r14d
js 0x1400177a0
test sil, sil
je 0x140017771
mov rdi, r15
jmp 0x140017767
mov al, byte [rdi]
dec r14d
test al, al
je 0x14001776c
inc rdi
cmp al, 0xc0
jb 0x140017767
jmp 0x14001775f
inc rdi
mov al, byte [rdi]
and al, 0xc0
cmp al, 0x80
je 0x14001775c
test r14d, r14d
jg 0x14001774a
sub edi, r15d
jmp 0x140017796
xor edi, edi
xor eax, eax
movsxd rcx, r14d
test r14d, r14d
jle 0x140017618
cmp byte [rax + r15], 0
je 0x140017618
inc rax
inc edi
cmp rax, rcx
jl 0x140017781
mov r13b, byte [rsp + 0x22]
jmp 0x140017e53
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r15
repne scasb al, byte [rdi]
not rcx
lea rdi, [rcx - 1]
btr edi, 0x1f
jmp 0x140017796
cmp byte [rsp + 0x20], 0
mov rsi, qword [rsp + 0x140]
jne 0x1400177db
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 0x14001762c
cmp byte [rsp + 0x20], 0
je 0x140017826
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14001780d
xorpd xmm6, xmm6
jmp 0x140017837
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.140031294
movapd xmm6, xmm0
jmp 0x140017837
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 [0x1401300f0]
jae 0x140017861
mov r8b, 0x2d
xorpd xmm6, xmm13
mov byte [rsp + 0x21], r8b
jmp 0x140017866
mov r8b, byte [rsp + 0x21]
cmp r12b, 3
jne 0x140017879
test r14d, r14d
jle 0x140017879
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 + 0xd68a0]
jl 0x1400178ce
mov eax, 0xcccccccd
mul edi
shr edx, 3
mov eax, edx
sub rax, 1
mulsd xmm2, qword [0x140130218]
jne 0x1400178c0
cmp r12b, 1
jne 0x14001791f
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 0x14001791b
movapd xmm0, xmm6
mulsd xmm0, qword [0x140130210]
addsd xmm2, xmm0
addsd xmm6, xmm2
movapd xmm0, xmm6
xor esi, esi
call fcn.14001903c
test eax, eax
je 0x14001793d
lea r15, [0x1400f3868]
lea edi, [rsi + 3]
jmp 0x140017618
comisd xmm6, xmmword [0x1401300f0]
jbe 0x140017a12
comisd xmm6, xmmword [0x140130208]
movsd xmm1, qword [0x1401300f8]
mov ebp, 0x15e
jb 0x140017983
cmp esi, ebp
jg 0x140017983
mulsd xmm1, qword [0x140130208]
add esi, 0x64
movapd xmm0, xmm1
mulsd xmm0, qword [0x140130208]
comisd xmm6, xmm0
jae 0x140017962
movapd xmm0, xmm1
jmp 0x140017994
cmp esi, ebp
jg 0x1400179a2
movapd xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x140130200]
comisd xmm6, xmm0
jae 0x140017989
movapd xmm0, xmm1
jmp 0x1400179b2
cmp esi, ebp
jg 0x1400179bc
movapd xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x1400179a8
divsd xmm6, xmm1
jmp 0x1400179cd
mulsd xmm6, qword [0x1401301f8]
sub esi, 8
comisd xmm6, xmmword [0x1401301f0]
jb 0x1400179c2
jmp 0x1400179df
mulsd xmm6, xmm7
dec esi
comisd xmm6, xmmword [0x1401300f8]
jb 0x1400179d9
cmp esi, ebp
jle 0x140017a12
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 0x140017613
lea rbx, [rsp + 0x60]
cmp r12b, 1
je 0x140017a31
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140017a31
mulsd xmm6, qword [0x1401301e8]
inc esi
cmp r12b, 3
jne 0x140017ae9
test r13b, r13b
sete r13b
cmp esi, 0xfffffffc
jl 0x140017ae2
cmp esi, r14d
jg 0x140017ae2
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 0x140017aa2
mov rcx, qword [rsp + 0x140]
call fcn.140016ff8
mov qword [rsp + 0x48], rax
mov rbx, rax
test rax, rax
je 0x14001822f
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 0x140017ad6
mov byte [rbx], r8b
inc rbx
test edi, edi
jns 0x140017aff
mov byte [rbx], 0x30
inc rbx
jmp 0x140017b2e
mov byte [rsp + 0x23], 2
jmp 0x140017af8
mov r13b, byte [rsp + 0x22]
cmp r12b, 2
jne 0x140017a61
xor edi, edi
jmp 0x140017a63
test ebp, ebp
jg 0x140017b07
mov al, 0x30
jmp 0x140017b1f
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 0x140017aff
mov rax, qword [rsp + 0x38]
test r12b, r12b
je 0x140017b39
mov byte [rbx], 0x2e
inc rbx
add edi, 1
jns 0x140017b94
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 0x140017b94
dec eax
mov qword [rsp + 0x38], rax
test ebp, ebp
jg 0x140017b72
mov al, 0x30
jmp 0x140017b8a
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 0x140017b63
test r13b, r13b
je 0x140017bd2
test r12b, r12b
je 0x140017bd2
lea rax, [rbx - 1]
jmp 0x140017bb1
mov rbx, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x140017ba8
lea rax, [rbx - 1]
cmp byte [rax], 0x2e
jne 0x140017bd2
test r9b, r9b
je 0x140017bcc
mov byte [rbx], 0x30
inc rbx
jmp 0x140017bd2
mov rbx, rax
mov byte [rax], 0
cmp byte [rsp + 0x23], 2
jne 0x140017c58
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 0x140017bff
mov byte [rbx + 1], 0x2d
add rbx, 2
neg esi
jmp 0x140017c07
mov byte [rbx + 1], 0x2b
add rbx, 2
cmp esi, 0x64
jl 0x140017c2a
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 0x140017624
test bl, bl
jne 0x140017624
cmp edi, r13d
jge 0x140017624
mov edx, r13d
sub edx, edi
movsxd rdi, edx
cmp r14, rdi
jl 0x140017cab
mov rcx, r15
sub rcx, rdi
mov al, byte [r14 + rcx]
mov byte [r14 + r15], al
dec r14
cmp r14, rdi
jge 0x140017c9b
xor eax, eax
test r8b, r8b
setne al
movsxd rcx, eax
test edx, edx
je 0x140017cc7
mov r8d, edx
add rcx, r15
mov dl, 0x30
call sub.msvcrt.dll_memset
mov edi, r13d
jmp 0x140017624
sub ecx, 0xb
je 0x140018190
sub ecx, 1
je 0x140018118
sub ecx, 1
je 0x140017e92
sub ecx, 1
je 0x140017d06
sub ecx, 1
je 0x140017e94
sub ecx, 1
jne 0x14001822f
jmp 0x140017e97
mov ebp, 0x27
cmp r12b, 0xe
lea eax, [rbp - 5]
cmove ebp, eax
cmp byte [rsp + 0x20], 0
je 0x140017d47
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140017d2d
xor esi, esi
jmp 0x140017d56
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.140031c84
mov rsi, rax
jmp 0x140017d56
mov rsi, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
xor edx, edx
test rsi, rsi
sete dl
test edx, edx
je 0x140017d78
lea rax, str.NULL
lea rsi, [0x1400f3878]
cmp r12b, 0xa
cmove rsi, rax
mov r13b, byte [rsp + 0x22]
xor r8d, r8d
xor edi, edi
xor ecx, ecx
test r14d, r14d
je 0x140017dbf
mov al, byte [rcx + rsi]
test al, al
je 0x140017dbf
cmp al, bpl
jne 0x140017d98
inc r8d
test r13b, r13b
je 0x140017db4
and al, 0xc0
cmp al, 0xc0
jne 0x140017db4
jmp 0x140017daa
inc edi
inc rcx
mov al, byte [rsi + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x140017da5
inc edi
inc rcx
sub r14d, 1
jne 0x140017d89
test edx, edx
jne 0x140017dce
cmp r12b, 0xa
jne 0x140017dce
lea ebx, [rdx + 1]
jmp 0x140017dd0
xor ebx, ebx
lea eax, [r8 + rdi + 3]
cmp eax, 0x46
jle 0x140017dfd
mov rcx, qword [rsp + 0x140]
movsxd rdx, eax
call fcn.140016ff8
mov qword [rsp + 0x48], rax
mov r15, rax
test rax, rax
je 0x14001822f
jmp 0x140017e02
lea r15, [rsp + 0x60]
xor ecx, ecx
xor eax, eax
test ebx, ebx
je 0x140017e13
lea ecx, [rax + 1]
mov byte [r15], bpl
mov rax, rcx
xor edx, edx
movsxd r8, edi
test edi, edi
jle 0x140017e3f
mov dil, byte [rdx + rsi]
inc ecx
mov byte [rax + r15], dil
inc rax
cmp dil, bpl
jne 0x140017e37
mov byte [rax + r15], dil
inc ecx
inc rax
inc rdx
cmp rdx, r8
jl 0x140017e1c
test ebx, ebx
je 0x140017e4c
mov byte [rax + r15], bpl
inc ecx
inc rax
mov byte [rax + r15], 0
mov edi, ecx
test r13b, r13b
je 0x140017618
mov r13, qword [rsp + 0x28]
test r13d, r13d
jle 0x14001761d
lea eax, [rdi - 1]
movsxd rcx, eax
test eax, eax
js 0x14001761d
mov al, byte [rcx + r15]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x140017e88
inc r13d
test rcx, rcx
jns 0x140017e78
jmp 0x14001761d
mov bl, 2
xor bpl, bpl
test byte [r8 + 2], 1
je 0x140017ef9
cmp byte [rsp + 0x20], 0
je 0x140017eb4
mov rcx, qword [rsp + 0x40]
call fcn.140016fc8
mov rdi, rax
jmp 0x140017ed3
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140017ecf
cmp bl, 2
jne 0x140017ecf
mov rdi, qword [r9 - 8]
jmp 0x140017ed3
movsxd rdi, dword [r9 - 8]
test rdi, rdi
jns 0x140017ef3
movabs rax, 0x8000000000000000
cmp rdi, rax
jne 0x140017eec
mov rdi, rax
jmp 0x140017eef
neg rdi
mov cl, 0x2d
jmp 0x140017f30
mov cl, byte [rsp + 0x21]
jmp 0x140017f34
cmp byte [rsp + 0x20], 0
je 0x140017f0f
mov rcx, qword [rsp + 0x40]
call fcn.140016fc8
mov rdi, rax
jmp 0x140017f2e
add r9, 8
mov qword [rsp + 0x150], r9
test bl, bl
je 0x140017f2a
cmp bl, 2
jne 0x140017f2a
mov rdi, qword [r9 - 8]
jmp 0x140017f2e
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 0x140017f5f
xor eax, eax
test cl, cl
mov ecx, r13d
setne al
sub ecx, eax
cmp r14d, ecx
cmovl r14d, ecx
cmp r14d, 0x25
jge 0x140017f71
mov ebx, 0x46
lea r9, [rsp + 0x60]
jmp 0x140017fb2
movsxd rbx, r14d
add rbx, 0xa
test bpl, bpl
je 0x140017f91
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.140016ff8
mov qword [rsp + 0x48], rax
mov r9, rax
test rax, rax
je 0x14001822f
lea eax, [rbx - 1]
movsxd r15, eax
add r15, r9
cmp r12b, 0xf
jne 0x140018029
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 0x140018003
mov rax, r10
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140018006
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r15, 2
mov al, byte [rdx + rcx*2 + 0xd68f1]
mov byte [r15 + 1], al
mov al, byte [rdx + rcx*2 + 0xd68f0]
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 0x140018042
mov eax, r9d
sub eax, r15d
lea ecx, [rax + rbx - 1]
cmp r14d, ecx
jle 0x140018080
sub r14d, ecx
mov eax, r14d
add ecx, r14d
dec r15
sub rax, 1
mov byte [r15], 0x30
jne 0x140018073
test bpl, bpl
je 0x1400180d2
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 0x1400180cd
sub r8d, 1
lea rax, [rdx + rdi]
mov cl, byte [rax + r15]
mov byte [rdx + r15], cl
jne 0x1400180ca
inc rdx
mov r8d, 3
dec rdi
mov byte [rdx + r15], bpl
inc rdx
test rdi, rdi
jg 0x1400180a8
mov al, byte [rsp + 0x21]
test al, al
je 0x1400180e0
dec r15
mov byte [r15], al
test sil, sil
je 0x14001810b
mov al, byte [r10 + 5]
test al, al
je 0x14001810b
lea rcx, [0x1400d66d4]
movzx eax, al
add rax, rcx
jmp 0x140018105
dec r15
inc rax
mov byte [r15], cl
mov cl, byte [rax]
test cl, cl
jne 0x1400180fc
sub r9d, r15d
lea edi, [r9 + rbx - 1]
jmp 0x14001761d
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x14001822f
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 0x140018173
mov rcx, rdx
call fcn.140019074
mov rcx, rsi
mov r8d, eax
call fcn.140018414
lea rdx, [0x1400f3880]
mov r8d, 1
mov rcx, rsi
call fcn.140018414
mov rdx, qword [rdi + rbx + 0x18]
mov rcx, rdx
call fcn.140019074
mov r8d, eax
mov rcx, rsi
call fcn.140018414
jmp 0x1400177db
mov rsi, qword [rsp + 0x140]
test byte [rsi + 0x1d], 1
je 0x14001822f
mov rdx, qword [r9]
add r9, 8
mov qword [rsp + 0x150], r9
test rdx, rdx
je 0x1400177db
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x1400177db
mov rdx, qword [rdx]
jmp 0x140018183
mov r8d, edi
mov rdx, r15
mov rcx, rsi
call fcn.140018414
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400181f6
mov rdx, rcx
mov rcx, qword [rsi]
call fcn.1400169a8
xor eax, eax
mov qword [rsp + 0x48], rax
mov rdi, qword [rsp + 0x148]
inc rdi
movsx eax, byte [rdi]
test eax, eax
je 0x14001822f
mov r9, qword [rsp + 0x150]
mov r12, qword [rsp + 0x40]
jmp 0x1400170eb
lea rdx, [0x1400f3864]
mov r8d, 1
mov rcx, rsi
call fcn.140018414
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