Function at 0x474e96
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
call fcn.0046040d
test al, al
je 0x474ec6
salc
xor ch, 0x63
add ch, cl
adc byte [ebp - 0x44], ch
sbb dword [ebx], esp
or al, 0xa4
dec ecx
and byte [edx], ch
push ds
popfd
inc esi
nop
jne 0x474f35
xchg edx, eax
sti
shr dword [edx - 0x7e3e0a63], 0xdb
call fcn.0046026f
test al, al
je 0x474eef
jno 0x474f07
pop ss
test al, 0x3d
idiv esi
insb byte es:[edi], dx
push ss
push ebp
mov eax, dword [ecx]
clc
dec edi
pop eax
sti
pop ebp
mov dh, 0x87
dec esp
or dword [eax], 0x3c9a9744
mov eax, 0x112ffe0c
cmp dword [ebp + 0xc], 0
mov esi, dword [ebp + 0x14]
mov byte [esi], 0
jg 0x474f02
mov eax, esi
jmp 0x4751b2
call fcn.0046015b
test al, al
je 0x474f21
inc ebx
xchg ebx, eax
pop edx
movsb byte es:[edi], byte [esi]
push ebp
jg 0x474ef6
sahf
cmp al, 0x3f
arpl word [ecx - 0x33], dx
cmp cl, al
stc
invalid
call fcn.0045ff33
test al, al
je 0x474f49
invalid
invalid
call fcn.0045fe1f
test al, al
je 0x474f62
push ecx
and edi, dword [esi]
in al, dx
invalid
mov esi, dword [ebp + 0x14]
xor bh, bh
mov eax, dword [ebp + 8]
xor edi, edi
add eax, dword [ebp + 0xc]
mov dword [ebp - 4], 1
mov dword [ebp - 8], edi
mov byte [esi], bh
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], eax
mov al, byte [eax]
test al, al
je 0x475016
movsx eax, al
push eax
call fcn.004ff7f3
mov bl, al
movsx ecx, bl
push ecx
call fcn.004ff468
pop ecx
pop ecx
test eax, eax
movzx ecx, bl
push 0x30
pop edx
cmovne ecx, edx
shl byte [edi + esi], 4
mov dl, byte [edi + esi]
mov al, cl
sub al, 0x30
inc bh
cmp al, 9
ja 0x474fc4
or al, dl
mov byte [edi + esi], al
jmp 0x474fd4
mov al, cl
sub al, 0x61
cmp al, 5
ja 0x475011
sub cl, 0x57
or cl, dl
mov byte [edi + esi], cl
cmp bh, 2
jne 0x475002
mov al, byte [edi + esi]
test al, al
je 0x474ff9
cmp al, 0xff
jle 0x47500b
movsx eax, al
cmp eax, 0xff
jge 0x47500b
push eax
call fcn.004ff439
pop ecx
test eax, eax
je 0x47500b
inc edi
xor bh, bh
mov dword [ebp - 8], edi
mov byte [edi + esi], bh
mov eax, dword [ebp + 0xc]
inc eax
jmp 0x474f7e
and dword [ebp - 4], 0
jmp 0x475016
add bl, ch
add eax, 0x4589c033
cld
xor eax, eax
mov dword [ebp - 4], eax
call fcn.0046015b
test al, al
je 0x475035
int3
call fcn.0045ff33
test al, al
je 0x47505d
lea ebx, [esi + 0x55188f9f]
mov edi, 0xf2323475
inc edi
sbb byte [ecx - 0x5d87ed79], 0xd3
jne 0x47500e
aam 0xf
add dword [ecx], ebp
xor esi, dword [ecx - 0x29]
call 0xbe2fe856
lodsd eax, dword [esi]
invalid
call fcn.0045fe1f
test al, al
je 0x475076
lodsd eax, dword [esi]
test dword [ecx + 0x24], 0x841964a9
jle 0x47504a
add dword [ecx - 0x74e35d60], 0xf685fc75
mov esi, dword [ebp - 4]
test esi, esi
jne 0x4750b6
mov esi, dword [ebp + 0x14]
xor eax, eax
mov edi, dword [ebp + 8]
inc eax
mov dword [ebp - 4], eax
xor ebx, ebx
mov al, byte [edi]
mov dword [ebp - 8], ebx
mov byte [ebp + 0xf], al
test al, al
je 0x4750b3
movsx eax, al
push eax
call fcn.004ff439
pop ecx
test eax, eax
je 0x4750af
mov al, byte [ebp + 0xf]
mov byte [ebx + esi], al
inc ebx
inc edi
jmp 0x47508b
xor esi, esi
jmp 0x4750b6
mov esi, dword [ebp - 4]
call fcn.004603c8
test al, al
je 0x4750d0
fsubr st(2), st(0)
push esp
stc
mov ebx, 0xfbe2e537
adc ebp, esi
mov ch, 0x8a
aam 0xad
push ss
mov ebx, dword [ebp + 0x14]
xor edi, edi
test esi, esi
cmovne edi, dword [ebp - 8]
or esi, 0xffffffff
cmp dword [ebp + 0x10], 0
mov dword [ebp + 8], esi
mov byte [edi + ebx], 0
je 0x47510f
test edi, edi
jle 0x47510f
mov eax, esi
lea edx, [ebx + 1]
sub eax, ebx
mov ebx, eax
mov al, byte [edx]
mov cl, byte [edx - 1]
mov byte [edx - 1], al
mov byte [edx], cl
lea edx, [edx + 2]
lea eax, [ebx + edx]
cmp eax, edi
jl 0x4750f8
mov ebx, dword [ebp + 0x14]
xor edi, edi
cmp byte [ebx], 0
je 0x47516b
movsx eax, byte [edi + ebx]
push eax
call fcn.004ff468
pop ecx
test eax, eax
jne 0x475131
test esi, esi
mov ecx, edi
mov dword [ebp + 8], ecx
cmovs esi, edi
jmp 0x475134
mov ecx, dword [ebp + 8]
inc edi
cmp byte [edi + ebx], 0
jne 0x475116
test esi, esi
js 0x47516b
test ecx, ecx
js 0x47516b
mov eax, esi
cmp esi, ecx
jg 0x475165
mov edx, ebx
sub edx, esi
mov cl, byte [eax + ebx]
test cl, cl
mov ecx, dword [ebp + 8]
je 0x475165
mov bl, byte [eax + ebx]
mov byte [edx + eax], bl
inc eax
mov ebx, dword [ebp + 0x14]
cmp eax, ecx
jle 0x47514d
sub eax, esi
mov byte [eax + ebx], 0
call fcn.0046033e
test al, al
je 0x47518e
and dword [esi + 0x2309f641], ecx
or al, 0xd1
fstp dword [eax]
adc al, 0x72
pop eax
pop eax
arpl word [esi], dx
shr dword [esi + 0x61518bfc], 1
xchg esp, eax
xor esi, dword [ebp + 0x39]
call fcn.0045ff33
test al, al
je 0x4751af
mov dl, 0x12
out 0xb2, al
pop ebp
inc esp
mov bh, 1
dec eax
iretd
mov eax, dword [ebp + 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10