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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x78]
sub rsp, 0x140
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movaps xmmword [rax - 0x78], xmm9
movaps xmmword [rax - 0x88], xmm11
movaps xmmword [rax - 0x98], xmm13
mov rax, qword [0x1400d1090]
xor rax, rsp
mov qword [rbp - 0x30], rax
mov r14, rcx
xor r15d, r15d
mov qword [rsp + 0x30], rcx
xor ecx, ecx
xor r13d, r13d
test byte [r14 + 0x1d], 2
mov r9, r8
mov qword [rsp + 0x38], r8
mov rdi, rdx
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x50], r15
je 0x1400042d9
mov r15, qword [r9]
add r9, 8
mov byte [rsp + 0x21], 1
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x38], r9
jmp 0x1400042dd
mov byte [rsp + 0x21], cl
movsx eax, byte [rdx]
test eax, eax
je 0x140005465
movsd xmm13, qword [0x1400c5520]
xorpd xmm8, xmm8
movsd xmm9, qword [0x1400c4610]
movsd xmm7, qword [0x1400c4618]
movsd xmm11, qword [0x1400c6018]
cmp eax, 0x25
je 0x140004344
mov r13, rdi
inc rdi
mov al, byte [rdi]
test al, al
je 0x140004325
cmp al, 0x25
jne 0x140004318
mov r8d, edi
mov rdx, r13
mov rcx, r14
sub r8d, r13d
call fcn.14000564c
cmp byte [rdi], 0
je 0x140005465
mov r9, qword [rsp + 0x38]
inc rdi
mov qword [rsp + 0x48], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x140005450
and dword [rsp + 0x28], 0
xor sil, sil
xor r12b, r12b
xor bl, bl
mov byte [rsp + 0x26], 0
mov byte [rsp + 0x23], sil
mov byte [rsp + 0x24], sil
mov byte [rsp + 0x22], sil
mov byte [rsp + 0x20], sil
or r14d, 0xffffffff
cmp ecx, 0x2c
jg 0x14000447b
je 0x140004473
mov edx, ecx
sub edx, 0x20
je 0x140004469
dec edx
je 0x14000445c
sub edx, 2
je 0x140004452
sub edx, 7
je 0x1400043c3
dec edx
jne 0x1400045d9
mov byte [rsp + 0x22], 0x2b
jmp 0x1400045a1
cmp byte [rsp + 0x21], 0
je 0x1400043ff
movsxd rdx, dword [r15 + 4]
cmp dword [r15], edx
jg 0x1400043dc
xor edx, edx
mov qword [rsp + 0x28], rdx
jmp 0x1400043f8
mov rax, qword [r15 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r15 + 4], eax
call fcn.14001fd84
mov rdx, rax
mov qword [rsp + 0x28], rax
mov r9, qword [rsp + 0x38]
jmp 0x140004410
mov edx, dword [r9]
add r9, 8
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x38], r9
test edx, edx
jns 0x14000442c
xor eax, eax
mov ecx, edx
mov byte [rsp + 0x20], 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 0x1400045a1
cmp eax, 0x6c
je 0x1400045a1
mov qword [rsp + 0x48], rcx
movsx ecx, byte [rcx]
jmp 0x1400045d9
mov byte [rsp + 0x24], 1
jmp 0x1400045a1
mov sil, 1
mov byte [rsp + 0x23], sil
jmp 0x1400045a1
mov byte [rsp + 0x22], 0x20
jmp 0x1400045a1
mov r12b, 0x2c
jmp 0x1400045a1
cmp ecx, 0x2d
je 0x14000459c
cmp ecx, 0x2e
je 0x1400044f4
cmp ecx, 0x30
je 0x1400044ea
jle 0x1400045d9
cmp ecx, 0x39
jg 0x1400045b5
inc rdi
lea edx, [rcx - 0x30]
movsx ecx, byte [rdi]
mov qword [rsp + 0x48], rdi
cmp ecx, 0x30
jl 0x1400044cc
cmp ecx, 0x39
jg 0x1400044c7
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x1400044b0
mov qword [rsp + 0x48], rdi
btr edx, 0x1f
mov dword [rsp + 0x28], edx
cmp ecx, 0x2e
je 0x1400044e2
cmp ecx, 0x6c
jne 0x1400045d9
dec rdi
jmp 0x1400045a1
mov byte [rsp + 0x26], 1
jmp 0x1400045a1
inc rdi
mov qword [rsp + 0x48], rdi
movsx ecx, byte [rdi]
cmp ecx, 0x2a
jne 0x14000456d
cmp byte [rsp + 0x21], 0
je 0x140004537
movsxd rdx, dword [r15 + 4]
cmp dword [r15], edx
jg 0x140004519
xor r14d, r14d
jmp 0x140004530
mov rax, qword [r15 + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r15 + 4], eax
call fcn.14001fd84
mov r14, rax
mov r9, qword [rsp + 0x38]
jmp 0x140004543
mov r14d, dword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
test r14d, r14d
jns 0x14000455d
mov ecx, r14d
or eax, 0xffffffff
neg ecx
cmp r14d, 0x80000001
cmovge eax, ecx
mov r14d, eax
inc rdi
mov qword [rsp + 0x48], rdi
movsx ecx, byte [rdi]
jmp 0x1400044d9
xor edx, edx
cmp ecx, 0x30
jl 0x140004590
cmp ecx, 0x39
jg 0x14000458b
inc rdi
lea eax, [rdx + rdx*4]
lea edx, [rcx + rax*2 - 0x30]
movsx ecx, byte [rdi]
cmp ecx, 0x30
jge 0x140004574
mov qword [rsp + 0x48], rdi
btr edx, 0x1f
mov r14d, edx
jmp 0x1400044d9
mov byte [rsp + 0x20], 1
inc rdi
mov qword [rsp + 0x48], rdi
movsx ecx, byte [rdi]
test ecx, ecx
je 0x1400045d9
jmp 0x140004381
cmp ecx, 0x6c
jne 0x1400045d9
inc rdi
mov bl, 1
movsx ecx, byte [rdi]
mov qword [rsp + 0x48], rdi
cmp ecx, 0x6c
jne 0x1400045d9
inc rdi
mov bl, 2
movsx ecx, byte [rdi]
mov qword [rsp + 0x48], rdi
lea r11, [0x1400b7f80]
xor edi, edi
mov r15b, 0x11
mov r8, r11
mov qword [rsp + 0x60], r11
mov rdx, r11
mov byte [rsp + 0x25], r15b
lea r10d, [rdi + 6]
movsx eax, byte [rdx]
cmp ecx, eax
je 0x140004614
lea rax, [0x1400b800a]
add rdx, r10
inc rdi
cmp rdx, rax
jl 0x1400045f9
jmp 0x14000462a
lea rax, [rdi + rdi*2]
lea r8, [r11 + rax*2]
mov qword [rsp + 0x60], r8
mov r15b, byte [r8 + 3]
mov byte [rsp + 0x25], r15b
movzx ecx, r15b
cmp ecx, 0xa
jg 0x140004ece
cmp ecx, 9
jge 0x140004f00
test r15b, r15b
je 0x140005088
test ecx, ecx
jle 0x140005465
cmp ecx, 3
jle 0x1400049e8
cmp ecx, 4
je 0x1400049b4
jle 0x140005465
cmp ecx, r10d
jle 0x140004877
cmp ecx, 7
je 0x14000480f
cmp ecx, 8
jne 0x140005465
cmp byte [rsp + 0x21], 0
je 0x140004707
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14000469c
xor ecx, ecx
jmp 0x1400046b4
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.140020888
mov rcx, rax
mov edi, 1
mov edx, edi
test rcx, rcx
je 0x1400046fe
movsx eax, byte [rcx]
inc rcx
mov byte [rbp - 0x80], al
and eax, 0xc0
cmp al, 0xc0
jne 0x1400047b0
mov r8b, byte [rcx]
mov al, r8b
and al, 0xc0
cmp al, 0x80
jne 0x1400047b0
mov byte [rbp + rdx - 0x80], r8b
inc rdx
inc edi
inc rcx
cmp rdx, 4
jl 0x1400046d6
jmp 0x1400047b0
mov byte [rbp - 0x80], 0
jmp 0x1400047b0
mov ecx, dword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
cmp ecx, 0x80
jae 0x140004728
mov byte [rbp - 0x80], cl
mov edi, 1
jmp 0x1400047b0
mov eax, ecx
cmp ecx, 0x800
jae 0x14000474c
shr eax, 6
and cl, 0x3f
mov edi, 2
and al, 0x1f
sub al, 0x40
add cl, 0x80
mov byte [rbp - 0x7f], cl
mov byte [rbp - 0x80], al
jmp 0x1400047b0
cmp ecx, 0x10000
jae 0x14000477a
shr eax, 0xc
mov edi, 3
and al, 0xf
sub al, 0x20
mov byte [rbp - 0x80], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
and al, 0x3f
add al, 0x80
add cl, 0x80
mov byte [rbp - 0x7e], cl
mov byte [rbp - 0x7f], al
jmp 0x1400047b0
shr eax, 0x12
mov dl, 0x3f
mov r8b, 0x80
and al, 7
mov edi, 4
sub al, 0x10
mov byte [rbp - 0x80], al
mov eax, ecx
shr eax, 0xc
and al, dl
add al, r8b
mov byte [rbp - 0x7f], al
mov eax, ecx
and cl, dl
shr eax, 6
and al, dl
add al, r8b
add cl, r8b
mov byte [rbp - 0x7d], cl
mov byte [rbp - 0x7e], al
cmp r14d, 1
jle 0x140004806
mov rcx, qword [rsp + 0x28]
mov r13, qword [rsp + 0x30]
mov eax, 1
sub eax, r14d
add ecx, eax
mov qword [rsp + 0x28], rcx
cmp ecx, 1
jle 0x1400047ee
cmp byte [rsp + 0x20], 0
jne 0x1400047ee
lea edx, [rcx - 1]
mov r8b, 0x20
mov rcx, r13
call fcn.1400055b0
and dword [rsp + 0x28], 0
lea ebx, [r14 - 1]
lea rdx, [rbp - 0x80]
mov r8d, edi
mov rcx, r13
call fcn.14000564c
dec rbx
jne 0x1400047f2
lea r13, [rbp - 0x80]
jmp 0x140005052
mov byte [rbp - 0x80], 0x25
mov edi, 1
lea r13, [rbp - 0x80]
mov rbx, qword [rsp + 0x28]
mov sil, byte [rsp + 0x20]
mov r14, qword [rsp + 0x30]
sub ebx, edi
mov qword [rsp + 0x28], rbx
test ebx, ebx
jle 0x140005408
test sil, sil
jne 0x14000484c
mov r8b, 0x20
mov edx, ebx
mov rcx, r14
call fcn.1400055b0
mov r8d, edi
mov rdx, r13
mov rcx, r14
call fcn.14000564c
test sil, sil
je 0x140005416
mov edx, dword [rsp + 0x28]
mov r8b, 0x20
mov rcx, r14
call fcn.1400055b0
jmp 0x140005416
cmp byte [rsp + 0x21], 0
je 0x1400048b3
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140004890
xor r13d, r13d
jmp 0x1400048ae
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.140020888
mov r10d, 6
mov r13, rax
mov r15b, 5
jmp 0x1400048bf
mov r13, qword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
test r13, r13
jne 0x1400048cd
lea r13, [0x1400c4580]
jmp 0x140004936
cmp r15b, r10b
jne 0x140004936
mov rax, qword [rsp + 0x30]
cmp dword [rax + 0x18], 0
jne 0x14000492e
cmp dword [rax + 0x14], 0
je 0x14000492e
cmp dword [rsp + 0x28], 0
jne 0x14000492e
test r14d, r14d
jns 0x14000492e
cmp byte [rax + 0x1c], 0
jne 0x14000492e
mov rcx, qword [rax]
mov rdx, r13
mov r14, rax
mov qword [rax + 8], r13
call fcn.140003974
or rcx, 0xffffffffffffffff
mov dword [r14 + 0x10], eax
xor eax, eax
mov rdi, r13
repne scasb al, byte [rdi]
not rcx
dec rcx
btr ecx, 0x1f
or byte [r14 + 0x1d], 4
mov dword [r14 + 0x18], ecx
jmp 0x1400049d7
mov rax, r13
mov qword [rsp + 0x58], rax
test r14d, r14d
js 0x140004999
test sil, sil
je 0x14000496f
mov rdi, r13
jmp 0x140004962
mov al, byte [rdi]
dec r14d
test al, al
je 0x140004967
inc rdi
cmp al, 0xc0
jb 0x140004962
jmp 0x14000495a
inc rdi
mov al, byte [rdi]
and al, 0xc0
cmp al, 0x80
je 0x140004957
test r14d, r14d
jg 0x140004945
sub edi, r13d
jmp 0x140005047
xor edi, edi
xor eax, eax
movsxd rcx, r14d
test r14d, r14d
jle 0x14000481c
cmp byte [rax + r13], 0
je 0x14000481c
inc rax
inc edi
cmp rax, rcx
jl 0x14000497f
jmp 0x140005047
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r13
repne scasb al, byte [rdi]
not rcx
lea rdi, [rcx - 1]
btr edi, 0x1f
jmp 0x140005047
cmp byte [rsp + 0x21], 0
mov r14, qword [rsp + 0x30]
jne 0x1400049d2
mov rcx, qword [r9]
mov eax, dword [r14 + 0x18]
add r9, 8
mov dword [rcx], eax
mov qword [rsp + 0x38], r9
and dword [rsp + 0x28], 0
mov rbx, qword [rsp + 0x28]
mov sil, byte [rsp + 0x20]
xor edi, edi
jmp 0x14000482b
cmp byte [rsp + 0x21], 0
je 0x140004a1c
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140004a03
movapd xmm6, xmm8
jmp 0x140004a2a
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.14001fde4
movapd xmm6, xmm0
jmp 0x140004a2a
movsd xmm6, qword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
test r14d, r14d
mov eax, 0x5f5e100
mov ecx, 6
cmovs r14d, ecx
cmp r14d, eax
cmovg r14d, eax
mov qword [rsp + 0x40], r14
comisd xmm8, xmm6
jbe 0x140004a5d
mov r8b, 0x2d
xorpd xmm6, xmm13
mov byte [rsp + 0x22], r8b
jmp 0x140004a62
mov r8b, byte [rsp + 0x22]
cmp r15b, 3
jne 0x140004a75
test r14d, r14d
jle 0x140004a75
dec r14d
mov qword [rsp + 0x40], 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
movsxd rcx, eax
lea rax, [0x140000000]
movsd xmm2, qword [rax + rcx*8 + 0xb8010]
cmp edi, 0xa
jl 0x140004ac9
mov eax, 0xcccccccd
mul edi
shr edx, 3
mov eax, edx
dec rax
mulsd xmm2, qword [0x1400c6010]
jne 0x140004abc
cmp r15b, 1
jne 0x140004b14
movsd qword [rsp + 0x68], xmm6
mov rcx, qword [rsp + 0x68]
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 0x140004b10
movapd xmm0, xmm6
mulsd xmm0, qword [0x1400c6008]
addsd xmm2, xmm0
addsd xmm6, xmm2
movapd xmm0, xmm6
xor esi, esi
call fcn.140006330
test eax, eax
je 0x140004b32
lea r13, [0x1400bdf90]
lea edi, [rsi + 3]
jmp 0x14000481c
comisd xmm6, xmm8
jbe 0x140004bff
comisd xmm6, xmmword [0x1400c6000]
movapd xmm1, xmm9
mov r12d, 0x15e
jb 0x140004b74
cmp esi, r12d
jg 0x140004b74
mulsd xmm1, qword [0x1400c6000]
add esi, 0x64
movapd xmm0, xmm1
mulsd xmm0, qword [0x1400c6000]
comisd xmm6, xmm0
jae 0x140004b52
movapd xmm0, xmm1
jmp 0x140004b86
cmp esi, r12d
jg 0x140004b94
movapd xmm1, xmm0
add esi, 0xa
mulsd xmm0, qword [0x1400c5ff8]
comisd xmm6, xmm0
jae 0x140004b7a
movapd xmm0, xmm1
jmp 0x140004ba5
cmp esi, r12d
jg 0x140004baf
movapd xmm1, xmm0
inc esi
mulsd xmm0, xmm7
comisd xmm6, xmm0
jae 0x140004b9a
divsd xmm6, xmm1
jmp 0x140004bc0
mulsd xmm6, qword [0x1400c5ff0]
sub esi, 8
comisd xmm11, xmm6
ja 0x140004bb5
jmp 0x140004bcf
mulsd xmm6, xmm7
dec esi
comisd xmm9, xmm6
ja 0x140004bc9
cmp esi, r12d
jle 0x140004bff
xor eax, eax
test r8b, r8b
mov byte [rbp - 0x80], r8b
setne al
mov dword [rbp + rax - 0x80], 0x666e49
xor eax, eax
test r8b, r8b
setne al
lea edi, [rax + 3]
jmp 0x140004818
lea rbx, [rbp - 0x80]
cmp r15b, 1
je 0x140004c1d
addsd xmm6, xmm2
comisd xmm6, xmm7
jb 0x140004c1d
mulsd xmm6, qword [0x1400c5fe8]
inc esi
mov rax, qword [rsp + 0x40]
cmp r15b, 3
jne 0x140004cdb
cmp byte [rsp + 0x24], 0
sete r14b
cmp esi, 0xfffffffc
jl 0x140004cd4
cmp esi, eax
jg 0x140004cd4
sub eax, esi
mov byte [rsp + 0x25], 1
mov qword [rsp + 0x40], rax
mov edi, esi
movsxd r15, dword [rsp + 0x28]
movsxd rcx, eax
xor eax, eax
test edi, edi
cmovg eax, edi
cdqe
add rax, r15
lea rdx, [rax + rcx + 0xf]
cmp rdx, 0x46
jle 0x140004c91
mov r13, qword [rsp + 0x30]
mov rcx, r13
call fcn.1400041d0
mov qword [rsp + 0x58], rax
mov rbx, rax
test rax, rax
je 0x140005465
movzx r9d, byte [rsp + 0x23]
mov rax, qword [rsp + 0x40]
mov r8b, byte [rsp + 0x22]
test eax, eax
lea edx, [r9 + r9*4]
mov qword [rsp + 0x70], rbx
setg r13b
lea r12d, [rdx + rdx + 0x10]
or r13b, r9b
or r13b, byte [rsp + 0x24]
test r8b, r8b
je 0x140004cc8
mov byte [rbx], r8b
inc rbx
test edi, edi
jns 0x140004cf4
mov byte [rbx], 0x30
inc rbx
jmp 0x140004d24
mov byte [rsp + 0x25], 2
jmp 0x140004ced
mov r9b, byte [rsp + 0x23]
mov r14b, r9b
cmp r15b, 2
jne 0x140004c52
xor edi, edi
jmp 0x140004c54
test r12d, r12d
jg 0x140004cfd
mov al, 0x30
jmp 0x140004d16
cvttsd2si eax, xmm6
dec r12d
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rbx], al
inc rbx
dec edi
jns 0x140004cf4
mov rax, qword [rsp + 0x40]
test r13b, r13b
je 0x140004d2f
mov byte [rbx], 0x2e
inc rbx
inc edi
jns 0x140004d8b
neg edi
mov dl, 0x30
mov rcx, rbx
mov r8d, edi
call fcn.1400a2620
mov rax, qword [rsp + 0x40]
mov r8b, byte [rsp + 0x22]
mov r9b, byte [rsp + 0x23]
add rbx, rdi
sub eax, edi
jmp 0x140004d8b
dec eax
mov qword [rsp + 0x40], rax
test r12d, r12d
jg 0x140004d68
mov al, 0x30
jmp 0x140004d81
cvttsd2si eax, xmm6
dec r12d
movd xmm0, eax
add al, 0x30
cvtdq2pd xmm0, xmm0
subsd xmm6, xmm0
mulsd xmm6, xmm7
mov byte [rbx], al
mov rax, qword [rsp + 0x40]
inc rbx
test eax, eax
jg 0x140004d58
test r14b, r14b
je 0x140004dc9
test r13b, r13b
je 0x140004dc9
lea rax, [rbx - 1]
jmp 0x140004da8
mov rbx, rax
mov byte [rax], 0
dec rax
cmp byte [rax], 0x30
je 0x140004d9f
lea rax, [rbx - 1]
cmp byte [rax], 0x2e
jne 0x140004dc9
test r9b, r9b
je 0x140004dc3
mov byte [rbx], 0x30
inc rbx
jmp 0x140004dc9
mov rbx, rax
mov byte [rax], 0
cmp byte [rsp + 0x25], 2
jne 0x140004e4f
mov r10, qword [rsp + 0x60]
lea rcx, str.0123456789ABCDEF0123456789abcdef
movzx eax, byte [r10 + 4]
mov al, byte [rax + rcx]
mov byte [rbx], al
test esi, esi
jns 0x140004df6
mov byte [rbx + 1], 0x2d
add rbx, 2
neg esi
jmp 0x140004dfe
mov byte [rbx + 1], 0x2b
add rbx, 2
cmp esi, 0x64
jl 0x140004e21
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 + 0x70]
mov sil, byte [rsp + 0x20]
mov byte [rbx], 0
sub ebx, r13d
cmp byte [rsp + 0x26], 0
mov edi, ebx
mov rbx, qword [rsp + 0x28]
je 0x140004826
test sil, sil
jne 0x140004826
cmp edi, ebx
jge 0x140004826
mov edx, ebx
sub edx, edi
movsxd rax, edx
cmp r15, rax
jl 0x140004eab
lea rcx, [r15 + r13]
mov rdi, rax
sub r15, rax
neg rdi
inc r15
mov al, byte [rdi + rcx]
mov byte [rcx], al
dec rcx
dec r15
jne 0x140004e9e
xor eax, eax
test r8b, r8b
setne al
movsxd rcx, eax
test edx, edx
je 0x140004ec7
mov r8d, edx
add rcx, r13
mov dl, 0x30
call fcn.1400a2620
mov edi, ebx
jmp 0x140004826
sub ecx, 0xb
je 0x1400053d1
dec ecx
je 0x140005327
dec ecx
je 0x140005086
dec ecx
je 0x140004f00
dec ecx
je 0x140005088
dec ecx
jne 0x140005465
jmp 0x14000508b
mov eax, 0x22
cmp r15b, 0xe
lea r12d, [rax + 5]
cmove r12d, eax
cmp byte [rsp + 0x21], 0
je 0x140004f43
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x140004f29
xor esi, esi
jmp 0x140004f4f
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.140020888
mov rsi, rax
jmp 0x140004f4f
mov rsi, qword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
xor edx, edx
test rsi, rsi
sete dl
test edx, edx
je 0x140004f71
lea rax, str.NULL
lea rsi, str._NULL_
cmp r15b, 0xa
cmove rsi, rax
xor r8d, r8d
xor edi, edi
xor ecx, ecx
test r14d, r14d
je 0x140004fb7
mov r9b, byte [rsp + 0x23]
mov al, byte [rcx + rsi]
test al, al
je 0x140004fb7
cmp al, r12b
jne 0x140004f91
inc r8d
test r9b, r9b
je 0x140004fad
and al, 0xc0
cmp al, 0xc0
jne 0x140004fad
jmp 0x140004fa3
inc edi
inc rcx
mov al, byte [rsi + rcx + 1]
and al, 0xc0
cmp al, 0x80
je 0x140004f9e
inc edi
inc rcx
dec r14d
jne 0x140004f82
test edx, edx
jne 0x140004fc6
cmp r15b, 0xa
jne 0x140004fc6
lea ebx, [rdx + 1]
jmp 0x140004fc8
xor ebx, ebx
lea eax, [r8 + rdi + 3]
cmp eax, 0x46
jle 0x140004ff2
mov rcx, qword [rsp + 0x30]
movsxd rdx, eax
call fcn.1400041d0
mov qword [rsp + 0x58], rax
mov r13, rax
test rax, rax
je 0x140005465
jmp 0x140004ff6
lea r13, [rbp - 0x80]
xor ecx, ecx
xor eax, eax
test ebx, ebx
je 0x140005007
lea ecx, [rax + 1]
mov byte [r13], r12b
mov eax, ecx
xor edx, edx
movsxd r8, edi
test edi, edi
jle 0x140005033
mov dil, byte [rdx + rsi]
inc ecx
mov byte [rax + r13], dil
inc rax
cmp dil, r12b
jne 0x14000502b
mov byte [rax + r13], dil
inc ecx
inc rax
inc rdx
cmp rdx, r8
jl 0x140005010
test ebx, ebx
je 0x140005040
mov byte [rax + r13], r12b
inc ecx
inc rax
mov byte [rax + r13], 0
mov edi, ecx
cmp byte [rsp + 0x23], 0
je 0x14000481c
mov rbx, qword [rsp + 0x28]
test ebx, ebx
jle 0x140004821
lea eax, [rdi - 1]
movsxd rcx, eax
test eax, eax
js 0x140004821
mov al, byte [rcx + r13]
dec rcx
and al, 0xc0
cmp al, 0x80
jne 0x14000507c
inc ebx
test rcx, rcx
jns 0x14000506d
jmp 0x140004821
mov bl, 2
xor r12b, r12b
test byte [r8 + 2], 1
je 0x1400050f4
cmp byte [rsp + 0x21], 0
je 0x1400050c9
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x1400050b1
xor edi, edi
mov cl, byte [rsp + 0x22]
jmp 0x140005146
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.14001fd84
mov rdi, rax
jmp 0x1400050e5
add r9, 8
mov qword [rsp + 0x38], r9
test bl, bl
je 0x1400050e1
cmp bl, 2
jne 0x1400050e1
mov rdi, qword [r9 - 8]
jmp 0x1400050e5
movsxd rdi, dword [r9 - 8]
test rdi, rdi
jns 0x1400050a8
not rdi
mov cl, 0x2d
inc rdi
jmp 0x140005142
cmp byte [rsp + 0x21], 0
je 0x140005124
mov rdi, qword [rsp + 0x50]
movsxd rdx, dword [rdi + 4]
cmp dword [rdi], edx
jg 0x14000510c
xor edi, edi
jmp 0x140005140
mov rax, qword [rdi + 8]
mov rcx, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [rdi + 4], eax
call fcn.14001fd84
mov rdi, rax
jmp 0x140005140
add r9, 8
mov qword [rsp + 0x38], r9
test bl, bl
je 0x14000513c
cmp bl, 2
jne 0x14000513c
mov rdi, qword [r9 - 8]
jmp 0x140005140
mov edi, dword [r9 - 8]
xor cl, cl
mov byte [rsp + 0x22], cl
mov rax, rdi
neg rax
sbb sil, sil
and sil, byte [rsp + 0x24]
cmp byte [rsp + 0x26], 0
je 0x14000516f
xor eax, eax
test cl, cl
mov ecx, dword [rsp + 0x28]
setne al
sub ecx, eax
cmp r14d, ecx
cmovl r14d, ecx
cmp r14d, 0x25
jge 0x140005180
mov ebx, 0x46
lea r9, [rbp - 0x80]
jmp 0x1400051be
movsxd rbx, r14d
add rbx, 0xa
test r12b, r12b
je 0x1400051a0
mov eax, 0x55555556
imul r14d
mov eax, edx
shr eax, 0x1f
add eax, edx
cdqe
add rbx, rax
mov rcx, qword [rsp + 0x30]
mov rdx, rbx
call fcn.1400041d0
mov qword [rsp + 0x58], rax
mov r9, rax
test rax, rax
je 0x140005465
lea eax, [rbx - 1]
movsxd r13, eax
add r13, r9
cmp r15b, 0xf
jne 0x140005236
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 0x14000520f
mov rax, r10
mul rcx
shr rdx, 3
lea rax, [rdx + rdx*4]
add rax, rax
sub rcx, rax
cmp rcx, 1
jne 0x140005212
xor r8d, r8d
lea rdx, [0x140000000]
movsxd rcx, r8d
sub r13, 2
mov al, byte [rdx + rcx*2 + 0xb8061]
mov byte [r13 + 1], al
mov cl, byte [rdx + rcx*2 + 0xb8060]
mov byte [r13], cl
mov r10, qword [rsp + 0x60]
lea rax, str.0123456789ABCDEF0123456789abcdef
movzx ecx, byte [r10 + 4]
movzx r8d, byte [r10 + 1]
add rcx, rax
xor edx, edx
mov rax, rdi
dec r13
div r8
mov rdi, rax
mov al, byte [rcx + rdx]
mov byte [r13], al
test rdi, rdi
jne 0x14000524f
mov eax, r9d
sub eax, r13d
lea ecx, [rax + rbx - 1]
cmp r14d, ecx
jle 0x14000528e
sub r14d, ecx
mov eax, r14d
add ecx, r14d
dec r13
dec rax
mov byte [r13], 0x30
jne 0x140005281
test r12b, r12b
je 0x1400052df
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 r13, rdi
sub ecx, eax
xor edx, edx
lea r8d, [rcx + 1]
jmp 0x1400052da
dec r8d
lea rax, [rdx + rdi]
mov cl, byte [rax + r13]
mov byte [rdx + r13], cl
jne 0x1400052d7
inc rdx
mov r8d, 3
dec rdi
mov byte [rdx + r13], r12b
inc rdx
test rdi, rdi
jg 0x1400052b6
mov al, byte [rsp + 0x22]
test al, al
je 0x1400052ee
dec r13
mov byte [r13], al
test sil, sil
je 0x14000531a
mov al, byte [r10 + 5]
test al, al
je 0x14000531a
lea rcx, [0x1400b7d9c]
movzx eax, al
add rax, rcx
jmp 0x140005314
dec r13
inc rax
mov byte [r13], cl
mov cl, byte [rax]
test cl, cl
jne 0x14000530a
sub r9d, r13d
lea edi, [r9 + rbx - 1]
jmp 0x14000481c
mov r14, qword [rsp + 0x30]
test byte [r14 + 0x1d], 1
je 0x140005465
mov rdi, qword [r9]
add r9, 8
mov rdx, qword [rdi + 0x18]
mov qword [rsp + 0x38], r9
test rdx, rdx
je 0x140005351
test sil, sil
je 0x140005394
cmp qword [rdi + 0x10], 0
je 0x14000538f
mov rdx, qword [rdi + 8]
test rdx, rdx
je 0x140005389
mov rcx, rdx
call fcn.140006368
mov rcx, r14
mov r8d, eax
call fcn.14000564c
lea rdx, [0x1400bdfa4]
mov r8d, 1
mov rcx, r14
call fcn.14000564c
mov rdx, qword [rdi + 0x10]
jmp 0x140005394
test rdx, rdx
je 0x1400053ac
mov rcx, rdx
call fcn.140006368
mov r8d, eax
mov rcx, r14
call fcn.14000564c
jmp 0x1400049d2
mov rax, qword [rdi + 0x28]
test rax, rax
je 0x1400049d2
mov r8d, dword [rax + 0x10]
lea rdx, str.SUBQUERY__u
mov rcx, r14
call fcn.140005b00
jmp 0x1400049d2
mov r14, qword [rsp + 0x30]
test byte [r14 + 0x1d], 1
je 0x140005465
mov rdx, qword [r9]
add r9, 8
mov qword [rsp + 0x38], r9
test rdx, rdx
je 0x1400049d2
mov r8d, dword [rdx + 8]
test r8d, r8d
je 0x1400049d2
mov rdx, qword [rdx]
jmp 0x14000539f
mov r8d, edi
mov rdx, r13
mov rcx, r14
call fcn.14000564c
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x140005432
mov rdx, rcx
mov rcx, qword [r14]
call fcn.140003a4c
xor eax, eax
mov qword [rsp + 0x58], rax
mov rdi, qword [rsp + 0x48]
inc rdi
movsx eax, byte [rdi]
test eax, eax
je 0x140005465
mov r9, qword [rsp + 0x38]
mov r15, qword [rsp + 0x50]
jmp 0x140004310
lea rdx, [0x1400bdf8c]
mov r8d, 1
mov rcx, r14
call fcn.14000564c
mov rcx, qword [rbp - 0x30]
xor rcx, rsp
call fcn.14009e400
lea r11, [rsp + 0x140]
mov rbx, qword [r11 + 0x58]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm11, xmmword [r11 - 0x50]
movaps xmm13, xmmword [r11 - 0x60]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret