Function at 0x140104298
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
mov qword [rsp + 0x20], rbx
mov dword [rsp + 0x18], r8d
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
xor r12d, r12d
mov r15, r9
mov ebx, r8d
mov r14, rdx
mov rsi, rcx
test rdx, rdx
jne 0x1401042d7
mov eax, 0x80004003
jmp 0x1401048d2
mov rax, qword [rbp + 0x60]
test rax, rax
je 0x1401042cd
test r9, r9
jne 0x1401042e8
mov dword [rax], r12d
test byte [rcx + 0x298], 4
mov r13d, dword [rax]
mov dword [rbp - 0x30], r13d
mov dword [rbp + 0x48], r13d
je 0x14010437a
add rcx, 0x150
call fcn.140107ce0
test eax, eax
je 0x14010437a
lea r8, [rbp + 0x48]
mov rcx, rsi
cmp r14, r15
jne 0x140104365
xor edx, edx
call fcn.1400ff500
test eax, eax
js 0x1401048d2
lea r8, [rbp - 0x20]
xor edx, edx
mov rcx, rsi
call fcn.1400ff540
test eax, eax
js 0x1401048d2
movsxd rdi, dword [rbp + 0x48]
mov eax, ebx
sub eax, edi
cmp ebx, eax
jge 0x140104353
mov eax, 0x80004005
jmp 0x1401048d2
mov ebx, eax
sub ebx, dword [rbp - 0x20]
mov dword [rbp + 0x50], ebx
cmp eax, ebx
jl 0x140104349
lea r14, [r14 + rdi*2]
jmp 0x14010437d
mov rdx, r15
call fcn.1400ff500
test eax, eax
js 0x1401048d2
mov edi, dword [rbp + 0x48]
jmp 0x14010437d
mov edi, r12d
mov r9d, dword [rbp + 0x68]
or edx, 0xffffffff
or dword [rbp - 0x28], edx
and r9d, 0x20
xor eax, eax
mov dword [rbp - 0x14], r9d
mov dword [rbp - 0x2c], edx
mov byte [rbp - 0x24], r12b
test ebx, ebx
jle 0x14010473e
mov ecx, r13d
movsxd rsi, r12d
movzx r13d, word [r14 + rsi*2]
cmp r13w, 0x3f
je 0x1401047bb
movsxd rax, edx
mov qword [rbp - 0x10], rax
cmp r13w, 0x25
jne 0x14010488b
lea eax, [rbx - 2]
cmp r12d, eax
jge 0x14010488b
movzx ecx, word [r14 + rsi*2 + 2]
call fcn.14009ee10
test eax, eax
je 0x14010470a
movzx ecx, word [r14 + rsi*2 + 4]
call fcn.14009ee10
test eax, eax
je 0x14010470a
movzx ecx, word [r14 + rsi*2 + 2]
call fcn.14009ee70
movzx ecx, word [r14 + rsi*2 + 4]
mov ebx, eax
shl bl, 4
call fcn.14009ee70
mov edx, eax
add dl, bl
mov byte [rbp + 0x48], dl
je 0x14010470a
cmp dl, 0x7f
jbe 0x14010483f
xor ebx, ebx
cmp dword [rbp - 0x14], ebx
je 0x140104685
cmp dword [rbp - 0x2c], 0xffffffff
jne 0x140104444
mov dword [rbp - 0x2c], r12d
mov qword [rbp - 0x10], rsi
mov r8d, dword [rbp - 0x28]
cmp r8d, 0xffffffff
mov eax, dword [rbp + 0x50]
cmove r8d, edi
add eax, 0xfffffffa
mov dword [rbp - 0x28], r8d
cmp r12d, eax
jg 0x140104689
cmp word [r14 + rsi*2 + 6], 0x25
jne 0x140104689
movzx ecx, word [r14 + rsi*2 + 8]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 0xa]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 8]
call fcn.14009ee70
movzx ecx, word [r14 + rsi*2 + 0xa]
mov ebx, eax
shl bl, 4
call fcn.14009ee70
add al, bl
mov cl, al
mov dword [rbp - 0x20], eax
and cl, 0xc0
cmp cl, 0x80
jne 0x140104682
mov dl, byte [rbp + 0x48]
mov cl, dl
and cl, 0xe0
cmp cl, 0xc0
je 0x140104798
mov ecx, dword [rbp + 0x50]
add ecx, 0xfffffff7
cmp r12d, ecx
jg 0x140104685
cmp word [r14 + rsi*2 + 0xc], 0x25
jne 0x140104685
movzx ecx, word [r14 + rsi*2 + 0xe]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 0x10]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 0xe]
call fcn.14009ee70
movzx ecx, word [r14 + rsi*2 + 0x10]
mov ebx, eax
shl bl, 4
call fcn.14009ee70
mov r9d, eax
add r9b, bl
mov cl, r9b
mov dword [rbp - 0x18], r9d
and cl, 0xc0
cmp cl, 0x80
jne 0x140104682
mov dl, byte [rbp + 0x48]
mov cl, dl
and cl, 0xf0
cmp cl, 0xe0
je 0x1401046de
mov ecx, dword [rbp + 0x50]
add ecx, 0xfffffff4
cmp r12d, ecx
jg 0x140104685
cmp word [r14 + rsi*2 + 0x12], 0x25
jne 0x140104685
movzx ecx, word [r14 + rsi*2 + 0x14]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 0x16]
call fcn.14009ee10
test eax, eax
je 0x140104682
movzx ecx, word [r14 + rsi*2 + 0x14]
call fcn.14009ee70
movzx ecx, word [r14 + rsi*2 + 0x16]
mov ebx, eax
shl bl, 4
call fcn.14009ee70
mov r9d, eax
add r9b, bl
mov cl, r9b
and cl, 0xc0
cmp cl, 0x80
jne 0x140104682
mov dl, byte [rbp + 0x48]
mov cl, dl
and cl, 0xf8
cmp cl, 0xf0
jne 0x140104685
mov r10d, dword [rbp - 0x30]
lea ecx, [rdi + 2]
cmp ecx, r10d
jg 0x140104685
mov r8d, dword [rbp - 0x20]
movzx ecx, r8b
shr ecx, 4
and ecx, 3
movzx eax, dl
and eax, 7
shl eax, 2
or ecx, eax
dec ecx
cmp ecx, 0x10000
jge 0x140104685
mov edx, dword [rbp - 0x18]
test r15, r15
je 0x14010464f
cmp edi, r10d
jge 0x14010464f
mov eax, 0xff60
and r8b, 0xf
or cx, ax
movzx eax, r8b
shl cx, 4
or cx, ax
mov al, dl
shr al, 4
and al, 3
shl cx, 2
movzx eax, al
or cx, ax
movsxd rax, edi
mov word [r15 + rax*2], cx
mov rsi, qword [rbp + 0x40]
and dl, 0xf
mov eax, 0xff70
movzx r13d, dl
or r13w, ax
and r9b, 0x3f
shl r13w, 6
inc edi
movzx eax, r9b
mov ecx, r10d
or r13w, ax
add r12d, 0xb
jmp 0x140104711
mov dl, byte [rbp + 0x48]
mov r8d, dword [rbp - 0x28]
xor ecx, ecx
test byte [rbp + 0x68], 1
mov dword [rbp - 0x14], ecx
jne 0x1401047d4
mov edx, dword [rbp - 0x2c]
cmp edx, 0xffffffff
je 0x14010488b
cmp r8d, 0xffffffff
je 0x14010488b
mov rsi, qword [rbp - 0x10]
mov r12d, edx
or qword [rbp - 0x10], 0xffffffffffffffff
or edx, 0xffffffff
or dword [rbp - 0x28], edx
mov edi, r8d
mov dword [rbp - 0x2c], edx
movzx r13d, word [r14 + rsi*2]
cmp r13w, 0x3f
je 0x1401047b6
mov ebx, dword [rbp + 0x50]
jmp 0x1401043bd
mov r8d, dword [rbp - 0x20]
and r9b, 0x3f
and r8b, 0x3f
movzx eax, dl
shl ax, 6
movzx r13d, r8b
or r13w, ax
movzx eax, r9b
shl r13w, 6
or r13w, ax
add r12d, 8
mov rsi, qword [rbp + 0x40]
mov ecx, dword [rbp - 0x30]
mov edx, dword [rbp - 0x2c]
xor eax, eax
test r15, r15
je 0x140104729
cmp edi, ecx
jge 0x140104729
movsxd rax, edi
mov word [r15 + rax*2], r13w
xor eax, eax
mov ebx, dword [rbp + 0x50]
inc r12d
inc edi
cmp r12d, ebx
jl 0x1401043a3
mov r13d, dword [rbp - 0x30]
mov eax, r13d
sub eax, edi
test byte [rsi + 0x298], 4
mov dword [rbp + 0x48], eax
je 0x140104897
lea rcx, [rsi + 0x150]
call fcn.140107ce0
xor ebx, ebx
test eax, eax
je 0x140104899
movsxd rax, edi
mov rcx, r15
neg rcx
mov rcx, rsi
sbb rdx, rdx
lea r8, [r15 + rax*2]
and rdx, r8
lea r8, [rbp + 0x48]
call fcn.1400ff540
test eax, eax
js 0x1401048d2
mov eax, dword [rbp + 0x48]
jmp 0x14010489b
and dl, 0x1f
and al, 0x3f
movzx r13d, dl
shl r13w, 6
movzx eax, al
or r13w, ax
add r12d, 5
jmp 0x14010470a
mov ecx, dword [rbp - 0x30]
xor eax, eax
mov rsi, qword [rbp + 0x40]
or edx, 0xffffffff
or dword [rbp - 0x28], edx
mov dword [rbp - 0x2c], edx
mov dword [rbp - 0x14], eax
mov byte [rbp - 0x24], 1
jmp 0x140104714
mov rsi, qword [rbp + 0x40]
mov ecx, dword [rsi + 0x2c]
lea eax, [rcx - 0x4b0]
cmp eax, 1
jbe 0x140104832
mov rax, qword [rsi + 8]
lea r9, [rbp - 0x1c]
mov qword [rsp + 0x28], rax
lea rdx, [rbp + 0x48]
mov r8d, 1
mov dword [rsp + 0x20], 1
call fcn.14009ddb8
test eax, eax
je 0x14010470e
movzx eax, word [rbp - 0x1c]
mov ecx, dword [rbp - 0x30]
mov edx, dword [rbp - 0x2c]
test ax, ax
je 0x140104714
movzx r13d, ax
add r12d, 2
jmp 0x140104714
movzx r13d, dl
add r12d, 2
jmp 0x14010470e
test byte [rbp + 0x68], 8
jne 0x14010470a
xor ecx, ecx
cmp byte [rbp - 0x24], cl
je 0x14010486f
cmp dl, 0x3d
ja 0x14010486f
movabs rcx, 0x2000084000000000
bt rcx, rdx
jae 0x14010486f
test byte [rbp + 0x68], 0x40
jne 0x14010470a
cmp dl, 0x23
jne 0x14010487e
test byte [rbp + 0x68], 4
jne 0x14010470a
movzx r13d, dl
add r12d, 2
jmp 0x14010470a
mov rsi, qword [rbp + 0x40]
mov ecx, dword [rbp - 0x30]
jmp 0x140104714
xor ebx, ebx
mov eax, ebx
add edi, eax
test r15, r15
je 0x1401048af
cmp edi, r13d
jg 0x1401048af
movsxd rcx, edi
mov word [r15 + rcx*2], bx
mov rcx, qword [rbp + 0x60]
mov dword [rcx], edi
test r15, r15
jne 0x1401048c0
lea eax, [r15 + 1]
jmp 0x1401048d2
cmp edi, r13d
jle 0x1401048d0
mov word [r15], bx
mov eax, 0x8007007a
jmp 0x1401048d2
xor eax, eax
mov rbx, qword [rsp + 0xb8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret