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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
movdqa xmmword [rsp + 0x50], xmm6
mov qword [rsp + 0x48], r9
mov r13, r8
mov rsi, rdx
mov r14d, dword [r8]
test rdx, rdx
mov qword [rsp + 0x30], rcx
je 0x51d7c1
mov rcx, rsi
call fcn.005f4bd8
mov rdi, rax
and edi, 0x3fffffff
jmp 0x51d7c3
xor edi, edi
mov r15d, r14d
not r15d
mov eax, r15d
or eax, 0xffffffbf
cmp eax, 0xffffffff
sete al
setne cl
cmp byte [0x005f6016], 0
sete dl
setne bl
xor bl, cl
or dl, al
xor dl, 1
or dl, bl
cmp edi, 4
seta al
xor dl, 1
cmp al, dl
je 0x51d812
cmp edi, 5
jb 0x51d812
mov eax, 0x656c6966
xor eax, dword [rsi]
movzx ecx, byte [rsi + 4]
xor ecx, 0x3a
or ecx, eax
je 0x51d860
call fcn.00402ec0
mov r12d, 7
test eax, eax
jne 0x51dc4c
lea ecx, [rdi + 8]
call fcn.00404550
test rax, rax
je 0x51dc4c
mov rbx, rax
mov dword [rax], 0
add rbx, 4
test edi, edi
je 0x51dab6
mov edi, edi
mov rcx, rbx
mov rdx, rsi
mov r8, rdi
call fcn.005f4c20
jmp 0x51dab8
lea ebx, [rdi + 8]
mov r9d, edi
cmp edi, 4
jae 0x51d872
xor ecx, ecx
jmp 0x51d9e0
mov ecx, r9d
xor ecx, 3
and ecx, r9d
movd xmm0, ebx
lea rdi, [rcx - 4]
mov rdx, rdi
shr rdx, 2
add rdx, 1
mov r8d, edx
and r8d, 1
test rdi, rdi
je 0x51dc65
mov rdi, rdx
xor rdi, 1
and rdi, rdx
pxor xmm1, xmm1
xor eax, eax
movdqa xmm2, xmmword [0x005fa850]
movdqa xmm3, xmmword [0x005fa860]
nop
movzx ebx, word [rsi + rax]
movd xmm4, ebx
movzx ebx, word [rsi + rax + 2]
movd xmm6, ebx
pcmpeqb xmm4, xmm2
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
pshufd xmm5, xmm4, 0xd4
pand xmm5, xmm3
paddq xmm5, xmm0
pcmpeqb xmm6, xmm2
punpcklbw xmm6, xmm6
punpcklwd xmm6, xmm6
pshufd xmm4, xmm6, 0xd4
pand xmm4, xmm3
paddq xmm4, xmm1
mov edx, eax
and edx, 4
mov rbp, rax
xor rbp, 4
or rbp, rdx
movzx edx, word [rsi + rbp]
movd xmm0, edx
pcmpeqb xmm0, xmm2
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0xd4
pand xmm0, xmm3
paddq xmm0, xmm5
movzx edx, word [rsi + rbp + 2]
movd xmm1, edx
pcmpeqb xmm1, xmm2
punpcklbw xmm1, xmm1
punpcklwd xmm1, xmm1
pshufd xmm1, xmm1, 0xd4
pand xmm1, xmm3
paddq xmm1, xmm4
add rax, 8
add rdi, 0xfffffffffffffffe
jne 0x51d8c0
test r8, r8
je 0x51d9bb
movzx edx, word [rsi + rax + 2]
movd xmm2, edx
movdqa xmm3, xmmword [0x005fa850]
pcmpeqb xmm2, xmm3
punpcklbw xmm2, xmm2
punpcklwd xmm2, xmm2
pshufd xmm2, xmm2, 0xd4
movdqa xmm4, xmmword [0x005fa860]
pand xmm2, xmm4
paddq xmm1, xmm2
movzx eax, word [rsi + rax]
movd xmm2, eax
pcmpeqb xmm2, xmm3
punpcklbw xmm2, xmm2
punpcklwd xmm2, xmm2
pshufd xmm2, xmm2, 0xd4
pand xmm2, xmm4
paddq xmm0, xmm2
paddq xmm0, xmm1
pshufd xmm1, xmm0, 0x4e
paddq xmm1, xmm0
movq rbx, xmm1
cmp rcx, r9
je 0x51d9f5
nop word cs:[rax + rax]
xor eax, eax
cmp byte [rsi + rcx], 0x26
sete al
add rbx, rax
add rcx, 1
cmp r9, rcx
jne 0x51d9e0
call fcn.00402ec0
mov r12d, 7
test eax, eax
jne 0x51dc4c
mov rcx, rbx
call fcn.00404550
test rax, rax
je 0x51dc4c
mov rbx, rax
mov qword [rsp + 0x28], r13
and r15d, 0x2dc9672e
mov eax, r14d
and eax, 0xd23698d1
or eax, r15d
xor eax, 0x2dc9676e
and r14d, 0x40
or r14d, eax
mov dword [rbx], 0
add rbx, 4
mov ebp, 5
cmp byte [rsi + 5], 0x2f
jne 0x51dcb6
cmp byte [rsi + 6], 0x2f
jne 0x51dcb6
mov eax, 7
xor edx, edx
mov cl, byte [rsi + rdx + 7]
test cl, cl
je 0x51da96
nop word cs:[rax + rax]
nop
cmp cl, 0x2f
je 0x51da96
add rax, 1
add rdx, 1
movzx ecx, byte [rsi + rdx + 7]
test cl, cl
jne 0x51da80
lea rbp, [rdx + 7]
cmp ebp, 0x10
je 0x51dc79
cmp ebp, 7
mov r13, qword [rsp + 0x28]
je 0x51dcb6
jmp 0x51dc99
xor edi, edi
mov rsi, qword [rsp + 0x30]
mov dword [rbx + rdi], 0
and r14d, 0xffffffbf
call fcn.00402ec0
test eax, eax
je 0x51db9b
mov rax, qword [rsp + 0x48]
mov qword [rax], 0
lea rcx, [0x0060552d]
mov rdx, rsi
call fcn.004087f0
mov r12d, 1
mov rcx, qword [rsp + 0xd8]
mov qword [rcx], rax
add rbx, 0xfffffffffffffffc
jmp 0x51db14
add rbx, 0xffffffffffffffff
cmp byte [rbx + 3], 0
jne 0x51db10
cmp byte [rbx + 2], 0
jne 0x51db10
cmp byte [rbx + 1], 0
jne 0x51db10
cmp byte [rbx], 0
jne 0x51db10
cmp dword [0x005f6010], 0
je 0x51dbc8
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x51db4a
call qword [0x005f6090]
mov rcx, rbx
call qword [0x005f6048]
cdqe
movabs rcx, 0x322f02c86a1d9889
mov rdx, qword [0x0213b040]
add rdx, rcx
sub rdx, rax
sub rdx, rcx
mov qword [0x0213b040], rdx
add qword [0x0213b088], 0xffffffffffffffff
mov rcx, rbx
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x51dbd1
call qword [0x005f60a0]
jmp 0x51dbd1
mov r15b, 1
cmp byte [0x005f6014], 0
je 0x51dbd5
mov ecx, 2
call qword [0x005f6080]
test rax, rax
je 0x51dbd5
mov rdi, rax
mov rcx, rax
call qword [0x005f6090]
xor r15d, r15d
jmp 0x51dbd7
mov rcx, rbx
call qword [0x005f6038]
xor ebx, ebx
jmp 0x51dc3d
xor edi, edi
mov rbp, qword [0x0213b0e0]
test rbp, rbp
sete cl
test rsi, rsi
sete dl
mov rax, rsi
or rax, rbp
setne al
cmp dl, cl
jne 0x51dc1b
test al, al
je 0x51dc1b
nop
mov rdx, qword [rbp + 0x18]
mov rcx, rsi
call fcn.005f4bf0
test eax, eax
je 0x51dc1b
mov rbp, qword [rbp + 0x10]
test rbp, rbp
jne 0x51dc00
xor ebp, ebp
test r15b, r15b
jne 0x51dc29
mov rcx, rdi
call qword [0x005f60a0]
mov rax, qword [rsp + 0x48]
mov qword [rax], rbp
xor r12d, r12d
test rbp, rbp
je 0x51dae1
mov rax, qword [rsp + 0xd0]
mov dword [r13], r14d
mov qword [rax], rbx
mov eax, r12d
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
pxor xmm1, xmm1
xor eax, eax
test r8, r8
jne 0x51d968
jmp 0x51d9bb
movabs rax, 0x736f686c61636f6c
xor rax, qword [rsi + 7]
movzx ecx, byte [rsi + 0xf]
xor rcx, 0x74
or rcx, rax
mov r13, qword [rsp + 0x28]
je 0x51dcb1
add rsi, 7
lea rcx, [0x00605423]
mov r8, rsi
call fcn.004087f0
jmp 0x51daf0
mov ebp, 0x10
xor r13d, r13d
lea r10, [0x005fb0a0]
movabs r11, 0x8000000800000001
movabs r15, 0x2000004800000001
movabs r12, 0x4800000001
xor eax, eax
mov qword [rsp + 0x20], rax
add eax, 0xffffffff
cdqe
mov qword [rsp + 0x38], rax
mov ecx, ebp
nop word cs:[rax + rax]
nop dword [rax + rax]
movsxd rax, ecx
mov dl, byte [rsi + rax]
test dl, dl
je 0x51df42
cmp dl, 0x23
je 0x51df42
lea ebp, [rcx + 1]
cmp dl, 0x25
jne 0x51de69
movsxd rax, ebp
movzx r9d, byte [rsi + rax]
mov al, byte [r9 + r10]
not al
or al, 0xf7
cmp al, 0xff
je 0x51de69
lea eax, [rcx + 2]
cdqe
movzx edi, byte [rsi + rax]
mov r8b, byte [rdi + r10]
mov eax, r8d
xor al, 0xf7
test al, r8b
je 0x51de69
mov eax, r9d
shr al, 6
mov edx, eax
xor dl, 2
and dl, al
movzx eax, dl
lea ebp, [rax + rax*8]
add bpl, r9b
shl bpl, 4
add ecx, 3
mov eax, edi
shr al, 6
mov edx, eax
xor dl, 2
and dl, al
movzx eax, dl
lea edx, [rax + rax*8]
add dl, dil
mov eax, edx
xor al, 0xf0
and al, dl
mov edx, eax
not dl
mov r8d, ebp
not r8b
mov r9d, edx
and r9b, 0x43
and al, 0xbc
or al, r9b
or dl, r8b
and r8b, 0x43
and bpl, 0xb0
or bpl, r8b
xor bpl, al
not dl
or dl, bpl
jne 0x51dedd
movsxd rcx, ecx
test r13d, r13d
je 0x51de14
cmp r13d, 1
je 0x51de34
cmp r13d, 2
je 0x51de54
mov al, byte [rsi + rcx]
test al, al
je 0x51dd00
cmp al, 0x23
je 0x51dd00
add rcx, 1
movzx eax, byte [rsi + rcx]
test al, al
jne 0x51ddeb
jmp 0x51dd00
add rcx, 1
movzx eax, byte [rsi + rcx]
cmp rax, 0x3f
ja 0x51de10
bt r11, rax
jae 0x51de10
jmp 0x51dd00
add rcx, 1
movzx eax, byte [rsi + rcx]
cmp rax, 0x3d
ja 0x51de30
bt r15, rax
jae 0x51de30
jmp 0x51dd00
add rcx, 1
movzx eax, byte [rsi + rcx]
cmp rax, 0x26
ja 0x51de50
bt r12, rax
jae 0x51de50
jmp 0x51dd00
cmp r13d, 1
jne 0x51def5
mov r13d, 1
cmp dl, 0x3d
je 0x51de83
cmp dl, 0x26
jne 0x51dedf
mov rax, qword [rsp + 0x38]
cmp byte [rbx + rax], 0
jne 0x51df0d
movsxd rcx, ebp
lea rax, [rsi + rcx]
mov dl, byte [rax]
mov r13d, 1
test dl, dl
je 0x51dd00
nop dword [rax]
cmp dl, 0x23
je 0x51dd00
cmp byte [rax - 1], 0x26
je 0x51dd00
add rcx, 1
add rax, 1
movzx edx, byte [rax]
mov r13d, 1
test dl, dl
jne 0x51deb0
jmp 0x51dd00
mov ebp, ecx
mov rcx, qword [rsp + 0x20]
movsxd rax, ecx
add ecx, 1
mov byte [rbx + rax], dl
mov rax, rcx
jmp 0x51dce0
test r13d, r13d
je 0x51df30
cmp r13d, 2
jne 0x51dedf
mov r13d, 2
cmp dl, 0x26
jne 0x51dedf
jmp 0x51df38
cmp dl, 0x26
jne 0x51df28
mov rcx, qword [rsp + 0x20]
movsxd rax, ecx
add ecx, 1
mov qword [rsp + 0x20], rcx
mov byte [rbx + rax], 0
jmp 0x51df3e
mov r13d, 2
jmp 0x51df3e
xor r13d, r13d
cmp dl, 0x3f
jne 0x51dedf
mov r13d, 1
xor edx, edx
jmp 0x51dedf
cmp r13d, 1
jne 0x51df63
mov rcx, qword [rsp + 0x20]
movsxd rax, ecx
add ecx, 1
mov byte [rbx + rax], 0
mov r13, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x30]
jmp 0x51df72
mov r13, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x20]
movsxd rax, ecx
mov dword [rbx + rax], 0
mov rcx, rbx
call fcn.005f4bd8
not eax
or rax, 0xffffffffc0000000
mov rcx, rax
neg rcx
cmp byte [rbx + rcx], 0
je 0x51dac8
mov rdi, rbx
sub rdi, rax
mov ebp, 0x68636163
jmp 0x51dfcf
mov eax, dword [rdi]
xor eax, ebp
movzx ecx, byte [rdi + 4]
xor ecx, 0x65
or ecx, eax
je 0x51e058
add r15d, 1
lea rdi, [r12 + r15]
cmp byte [r12 + r15], 0
je 0x51e162
mov rcx, rdi
call fcn.005f4bd8
mov rsi, rax
not esi
or esi, 0xc0000000
mov r12d, esi
neg r12d
add r12, rdi
mov rcx, r12
call fcn.005f4bd8
mov r15d, eax
xor r15d, 0xc0000000
and r15d, eax
cmp esi, 0xfffffffa
je 0x51dfa9
not esi
cmp esi, 4
je 0x51e02c
cmp esi, 3
jne 0x51dfbc
movzx eax, word [rdi]
xor eax, 0x6676
movzx ecx, byte [rdi + 2]
xor ecx, 0x73
or cx, ax
jne 0x51dfbc
mov qword [rsp + 0x30], r12
jmp 0x51dfbc
cmp dword [rdi], 0x65646f6d
jne 0x51dfbc
mov eax, r14d
and eax, 0x87
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x44], 0xffffff78
lea rsi, [0x006054a0]
lea rax, [0x006054fa]
jmp 0x51e076
mov dword [rsp + 0x20], 0x60000
mov dword [rsp + 0x44], 0xfff9ffff
lea rsi, [0x00605450]
lea rax, [0x00605443]
mov qword [rsp + 0x38], rax
mov rbp, qword [rsi]
test rbp, rbp
je 0x51e13e
mov edi, r15d
add rsi, 0x10
xor r13d, r13d
jmp 0x51e0b4
add r13, 1
mov rbp, qword [rsi]
add rsi, 0x10
test rbp, rbp
je 0x51e13e
mov rcx, rbp
call fcn.005f4bd8
and eax, 0x3fffffff
cmp r15d, eax
jne 0x51e0a0
mov rcx, r12
mov rdx, rbp
mov r8, rdi
call fcn.005f4c28
test eax, eax
jne 0x51e0a0
mov eax, dword [rsi - 8]
test eax, eax
je 0x51e13e
mov ecx, eax
xor ecx, 0x80
and ecx, eax
cmp ecx, dword [rsp + 0x20]
jg 0x51e16c
mov ecx, dword [rsp + 0x44]
not ecx
not r14d
or r14d, ecx
mov ecx, r14d
not ecx
mov edx, eax
not edx
mov ebp, edx
and ebp, 0x5bbbd6f8
and eax, 0xa4442907
or eax, ebp
or edx, r14d
and r14d, 0x5bbbd6f8
and ecx, 0xa4442907
or ecx, r14d
xor ecx, eax
not edx
or edx, ecx
mov r14d, edx
mov r13, qword [rsp + 0x28]
mov ebp, 0x68636163
jmp 0x51dfbc
lea rcx, [0x00605501]
mov rdx, qword [rsp + 0x38]
mov r8, r12
call fcn.004087f0
mov r12d, 1
mov r13, qword [rsp + 0x28]
jmp 0x51daf6
mov rsi, qword [rsp + 0x30]
jmp 0x51dac8
lea rcx, [0x00605515]
mov rdx, qword [rsp + 0x38]
mov r8, r12
call fcn.004087f0
mov r12d, 3
mov r13, qword [rsp + 0x28]
jmp 0x51daf6