Function at 0x40fa48
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff660
push ebx
push esi
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x40fe47
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
call fcn.0040c7c8
mov byte [ebp - 0x94d], 0
xor ebx, ebx
push 0
push 0x8e8
mov eax, dword [ebp - 8]
call fcn.0040c220
call fcn.0040522c
mov esi, eax
push 0
push 0
mov eax, dword [ebp - 8]
call fcn.0040c20c
test esi, esi
jle 0x40fbc6
mov dword [ebp - 0x18], esi
lea edx, [ebp - 0x900]
mov ecx, 0x8e8
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 8]
xor eax, eax
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0xc], eax
imul eax, dword [ebp - 0x10], 0x39
mov edx, dword [ebp - 0xc]
lea edx, [edx + edx*2]
add eax, edx
xor edx, edx
mov dl, byte [ebp + eax - 0x900]
mov ecx, edx
shr ecx, 2
mov cl, byte [ecx + 0x42d325]
mov byte [ebp + ebx - 0x94c], cl
and edx, 3
shl edx, 4
movzx esi, byte [ebp + eax - 0x8ff]
mov ecx, esi
shr ecx, 4
add edx, ecx
mov dl, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x94b], dl
and esi, 0xf
mov ecx, esi
shl ecx, 2
xor edx, edx
mov dl, byte [ebp + eax - 0x8fe]
mov esi, edx
shr esi, 6
add ecx, esi
mov cl, byte [ecx + 0x42d325]
mov byte [ebp + ebx - 0x94a], cl
and edx, 0x3f
mov al, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x949], al
add ebx, 4
cmp ebx, 0x4c
jne 0x40fba3
mov byte [ebp - 0x94d], 0x4c
lea edx, [ebp - 0x94d]
lea eax, [ebp - 0x9a0]
call fcn.00402e48
mov edx, 0x40fe58
lea eax, [ebp - 0x9a0]
mov cl, 0x4e
call fcn.00402e18
lea edx, [ebp - 0x9a0]
lea eax, [ebp - 0x14]
call fcn.00404560
mov eax, dword [ebp - 0x14]
call fcn.004045bc
push eax
lea eax, [ebp - 0x14]
call fcn.0040480c
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0xc]
xor ebx, ebx
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x13
jne 0x40fac7
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x28
jne 0x40fac2
dec dword [ebp - 0x18]
jne 0x40faaa
push 0
push 3
push 0
push 0x8e8
mov eax, dword [ebp - 8]
call fcn.0040c220
call fcn.004052f4
call fcn.0040522c
mov esi, eax
test esi, esi
jle 0x40fcd8
mov dword [ebp - 0x18], esi
lea edx, [ebp - 0x900]
mov ecx, 3
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 8]
xor eax, eax
mov al, byte [ebp - 0x900]
mov edx, eax
shr edx, 2
mov dl, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x94c], dl
and eax, 3
shl eax, 4
xor edx, edx
mov dl, byte [ebp - 0x8ff]
mov ecx, edx
shr ecx, 4
add eax, ecx
mov al, byte [eax + 0x42d325]
mov byte [ebp + ebx - 0x94b], al
and edx, 0xf
shl edx, 2
xor eax, eax
mov al, byte [ebp - 0x8fe]
mov ecx, eax
shr ecx, 6
add edx, ecx
mov dl, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x94a], dl
and eax, 0x3f
mov al, byte [eax + 0x42d325]
mov byte [ebp + ebx - 0x949], al
add ebx, 4
cmp ebx, 0x4c
jne 0x40fccf
mov byte [ebp - 0x94d], 0x4c
lea edx, [ebp - 0x94d]
lea eax, [ebp - 0x9a0]
call fcn.00402e48
mov edx, 0x40fe58
lea eax, [ebp - 0x9a0]
mov cl, 0x4e
call fcn.00402e18
lea edx, [ebp - 0x9a0]
lea eax, [ebp - 0x14]
call fcn.00404560
mov eax, dword [ebp - 0x14]
call fcn.004045bc
push eax
lea eax, [ebp - 0x14]
call fcn.0040480c
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0xc]
xor ebx, ebx
dec dword [ebp - 0x18]
jne 0x40fbf0
push 0
push 3
mov eax, dword [ebp - 8]
call fcn.0040c220
call fcn.004052f4
cmp edx, 0
jne 0x40fd62
cmp eax, 2
jne 0x40fd62
lea edx, [ebp - 0x900]
mov ecx, 2
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 8]
xor eax, eax
mov al, byte [ebp - 0x900]
mov edx, eax
shr edx, 2
mov dl, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x94c], dl
and eax, 3
shl eax, 4
xor edx, edx
mov dl, byte [ebp - 0x8ff]
mov ecx, edx
shr ecx, 4
add eax, ecx
mov al, byte [eax + 0x42d325]
mov byte [ebp + ebx - 0x94b], al
and edx, 0xf
mov eax, edx
shl eax, 2
mov al, byte [eax + 0x42d325]
mov byte [ebp + ebx - 0x94a], al
mov byte [ebp + ebx - 0x949], 0x3d
add ebx, 4
push 0
push 3
mov eax, dword [ebp - 8]
call fcn.0040c220
call fcn.004052f4
cmp edx, 0
jne 0x40fdd0
cmp eax, 1
jne 0x40fdd0
lea edx, [ebp - 0x900]
mov ecx, 1
mov eax, dword [ebp - 8]
mov esi, dword [eax]
call dword [esi + 8]
xor eax, eax
mov al, byte [ebp - 0x900]
mov edx, eax
shr edx, 2
mov dl, byte [edx + 0x42d325]
mov byte [ebp + ebx - 0x94c], dl
and eax, 3
shl eax, 4
mov al, byte [eax + 0x42d325]
mov byte [ebp + ebx - 0x94b], al
mov byte [ebp + ebx - 0x94a], 0x3d
mov byte [ebp + ebx - 0x949], 0x3d
add ebx, 4
mov byte [ebp - 0x94d], bl
test ebx, ebx
jle 0x40fe27
lea edx, [ebp - 0x94d]
lea eax, [ebp - 0x9a0]
call fcn.00402e48
mov edx, 0x40fe58
lea eax, [ebp - 0x9a0]
mov cl, 0x4e
call fcn.00402e18
lea edx, [ebp - 0x9a0]
lea eax, [ebp - 0x14]
call fcn.00404560
mov eax, dword [ebp - 0x14]
call fcn.004045bc
push eax
lea eax, [ebp - 0x14]
call fcn.0040480c
mov edx, eax
mov eax, dword [ebp - 4]
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 4]
call fcn.0040c220
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40fe4e
lea eax, [ebp - 0x14]
call fcn.00404304
ret