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

Disassembly:
sub esp, 0x2c
push ebp
mov ebp, ecx
cmp dword [ebp + 0x10], 0
mov dword [esp + 0x18], ebp
je 0x5a971e
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x5a971e
mov eax, dword [esp + 0x38]
test eax, eax
je 0x5a971e
mov dword [ecx], 0
mov dword [eax], 0
mov eax, dword [esp + 0x3c]
mov dword [eax], 0
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x1258]
mov edx, dword [eax + 0x1074]
mov eax, dword [eax + 0x107c]
add edx, ecx
push ebx
add eax, ecx
lea ecx, [ebp + 0x114]
push esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], ecx
push edi
mov edx, dword [esp + 0x20]
mov edi, dword [edx]
test edi, edi
mov dword [esp + 0x1c], edi
jne 0x5a9278
mov eax, dword [0x683c14]
mov ecx, dword [ebp + eax*4 + 0x88]
mov dword [esp + 0x1c], ecx
mov edi, ecx
mov ecx, dword [ebp + 0x10]
push 1
push edi
add ecx, 0x110
call fcn.00582090
lea edx, [edi - 1]
cmp edx, 0x7ce
ja 0x5a9712
lea ecx, [eax - 1]
cmp ecx, 0x3e
ja 0x5a9712
mov edx, edi
shl edx, 6
add edx, eax
mov esi, dword [edx*4 + 0xb51d8c]
test esi, esi
je 0x5a92bc
mov dword [esp + 0x14], esi
jmp 0x5a92ce
push eax
push edi
mov ecx, 0x8e4d10
call fcn.00572a90
mov dword [esp + 0x14], eax
mov esi, eax
test esi, esi
je 0x5a9712
mov ecx, dword [esp + 0x1c]
mov eax, dword [esi + 0x30]
push ecx
mov ecx, dword [ebp + 0x10]
xor ebx, ebx
add ecx, 0x110
mov dword [esp + 0x1c], eax
add esi, 0x68c
xor edi, edi
mov dword [esp + 0x14], ebx
call fcn.0056ebf0
test eax, eax
je 0x5a9308
mov edx, dword [eax]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x40], 0
je 0x5a935a
mov eax, dword [esi]
cmp eax, 0x39
jne 0x5a9343
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + 0x13cc]
imul edx, dword [esi + 4]
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ecx + 0x1110]
mov dword [esp + 0x1c], eax
jmp 0x5a9367
cmp eax, 0x38
jne 0x5a935a
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x1110]
add eax, dword [esi + 4]
mov dword [esp + 0x1c], eax
jmp 0x5a9367
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + 0x1110]
mov dword [esp + 0x1c], edx
mov eax, dword [esi + 0x20]
add esi, 0x20
cmp eax, 0x41
jne 0x5a93e8
mov ebx, dword [esi + 4]
add ebx, 0x64
mov eax, ebx
imul eax, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fld qword [0x63c948]
fdiv st(1), st(0)
fxch st(1)
call fcn.00612f80
imul ebx, dword [esp + 0x30]
mov dword [esp + 0x14], ebx
mov edi, eax
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
mov ebx, eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5a9450
imul eax, edi
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
mov ecx, dword [esp + 0x10]
imul ecx, ebx
mov dword [esp + 0x14], ecx
add edi, eax
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
add ebx, eax
jmp 0x5a9450
cmp eax, 0x3b
jne 0x5a944a
mov ebx, dword [esp + 0x10]
mov eax, dword [esi + 4]
add ebx, 0x64
mov edx, ebx
imul edx, eax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fld qword [0x63c948]
fdiv st(1), st(0)
fxch st(1)
call fcn.00612f80
mov edi, eax
mov eax, dword [esi + 0xc]
imul eax, ebx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
cmp dword [esp + 0x18], 0
mov ebx, eax
jne 0x5a9450
cmp dword [esi + 4], 0
je 0x5a9450
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x10c4]
add ebx, dword [eax + 0x10cc]
jmp 0x5a9450
fld qword [0x63c948]
add esi, 0x10
cmp dword [esi], 0x3c
jne 0x5a9494
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 4]
add eax, 0x64
imul ecx, eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
mov edx, dword [esi + 0xc]
add edi, eax
mov eax, dword [esp + 0x10]
add eax, 0x64
imul edx, eax
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
add ebx, eax
cmp dword [esp + 0x18], 0
je 0x5a94ac
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x1094]
add ebx, dword [eax + 0x109c]
jmp 0x5a94c1
cmp dword [esi + 4], 0
je 0x5a94c1
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x10d4]
add ebx, dword [eax + 0x10dc]
add esi, 0x10
cmp dword [esi], 0x3d
jne 0x5a9512
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 4]
add eax, 0x64
imul ecx, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x34]
fdiv st(1)
call fcn.00612f80
mov edx, dword [ebp + 0x10]
add edi, eax
mov eax, dword [edx + 0x1248]
add eax, 0x64
imul eax, dword [esi + 0xc]
mov dword [esp + 0x34], eax
fild dword [esp + 0x34]
fdiv st(1)
fimul dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
add ebx, eax
cmp dword [esp + 0x18], 0
je 0x5a952a
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x1084]
add ebx, dword [eax + 0x108c]
jmp 0x5a953f
cmp dword [esi + 4], 0
je 0x5a953f
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x10f4]
add ebx, dword [eax + 0x10fc]
add esi, 0x10
cmp dword [esi], 0x3e
jne 0x5a95a3
mov ebp, dword [esi + 0xc]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x38], eax
add ecx, 0x64
mov edx, ebp
sub edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x10]
imul edx, dword [ecx + 0x1254]
mov dword [esp + 0x34], edx
fild dword [esp + 0x34]
fdiv st(1)
fiadd dword [esp + 0x38]
fimul dword [esp + 0x14]
fdiv st(1)
call fcn.00612f80
imul ebp, dword [esp + 0x14]
mov dword [esp + 0x38], ebp
add edi, eax
fild dword [esp + 0x38]
fdiv st(1)
call fcn.00612f80
mov ebp, dword [esp + 0x24]
add ebx, eax
cmp dword [esp + 0x18], 0
je 0x5a95bb
mov eax, dword [ebp + 0x10]
add edi, dword [eax + 0x10a4]
add ebx, dword [eax + 0x10ac]
jmp 0x5a95ce
cmp dword [esi + 4], 0
je 0x5a95ce
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 0x10e4]
add edi, eax
add ebx, eax
add esi, 0x10
cmp dword [esi], 0x3f
jne 0x5a9608
mov ecx, dword [esi + 0xc]
test ecx, ecx
jle 0x5a9608
mov eax, dword [esi + 8]
imul eax, dword [esi + 4]
cdq
idiv ecx
mov ecx, dword [esp + 0x10]
add ecx, 0x64
imul ecx, eax
mov dword [esp + 0x38], ecx
fild dword [esp + 0x38]
fdiv qword [0x650598]
call fcn.00612f80
sub edi, eax
sub ebx, eax
cmp dword [esp + 0x18], 0
je 0x5a9633
mov edx, dword [ebp + 0x10]
cmp dword [edx + 0x10bc], 0
jle 0x5a965f
mov ecx, edx
mov eax, dword [ecx + 0x10b8]
imul eax, dword [ecx + 0x10b4]
cdq
idiv dword [ecx + 0x10bc]
jmp 0x5a965b
cmp dword [esi + 4], 0
je 0x5a965f
mov eax, dword [ebp + 0x10]
cmp dword [eax + 0x110c], 0
jle 0x5a965f
mov ecx, eax
mov eax, dword [ecx + 0x1108]
imul eax, dword [ecx + 0x1104]
cdq
idiv dword [ecx + 0x110c]
add edi, eax
add ebx, eax
add esi, 0x10
cmp dword [esi], 0x40
jne 0x5a96a4
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 4]
add eax, 0x64
imul ecx, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x38]
fdiv st(1)
call fcn.00612f80
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x14]
mov dword [esp + 0x38], edx
add edi, eax
fild dword [esp + 0x38]
fdivrp st(1)
call fcn.00612f80
add ebx, eax
jmp 0x5a96a6
fstp st(0)
mov eax, 0x66666667
imul edi
mov eax, dword [esp + 0x40]
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add dword [eax], ecx
mov eax, 0x66666667
imul ebx
mov eax, dword [esp + 0x44]
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add dword [eax], ecx
add dword [esp + 0x20], 4
mov eax, 0x66666667
imul dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add dword [eax], ecx
mov eax, dword [esp + 0x28]
add eax, 1
cmp eax, 5
mov dword [esp + 0x28], eax
jl 0x5a9258
pop edi
pop esi
pop ebx
mov eax, 1
pop ebp
add esp, 0x2c
ret 0xc
pop edi
pop esi
pop ebx
xor eax, eax
pop ebp
add esp, 0x2c
ret 0xc
xor eax, eax
pop ebp
add esp, 0x2c
ret 0xc