Function at 0x471240
Capabilities:
Encode data using base64

Disassembly:
push ecx
push ebx
push ebp
mov ebp, dword [esp + 0x18]
push esi
push edi
mov edi, eax
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
movzx eax, byte [edx + 1]
shr ebp, 0xb
add edx, 2
and ebp, 1
je 0x471298
cmp eax, 0xc0
jl 0x471298
mov ecx, eax
and ecx, 0x3f
movzx esi, byte [ecx + 0x4b3d00]
and eax, dword [esi*4 + 0x4b3ce4]
lea ecx, [esi + esi*2]
add ecx, ecx
shl eax, cl
test esi, esi
jle 0x471298
movzx ebx, byte [edx]
sub ecx, 6
and ebx, 0x3f
shl ebx, cl
dec esi
inc edx
or eax, ebx
test esi, esi
jg 0x471285
dec edx
test eax, eax
jne 0x4712ac
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 1
jmp 0x4715a3
lea ecx, [eax - 0x30]
cmp ecx, 0x4a
ja 0x47158e
movsx ebx, word [ecx*2 + 0x4b4910]
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x4712cf
mov eax, ebx
jmp 0x47158e
cmp ecx, 0x48
ja case.0x4712df.10
movzx esi, byte [ecx + 0x4715e8]
jmp dword [esi*4 + 0x4715cc]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x25
jmp 0x47158e
mov al, byte [edx + 1]
cmp al, 0x3c
je 0x4713f2
cmp al, 0x27
je 0x4713f2
cmp al, 0x7b
jne 0x47134f
mov al, byte [edx + 2]
lea ecx, [edx + 2]
test al, al
je 0x471332
cmp al, 0x7d
je 0x47133a
cmp al, 0x2d
je 0x47132a
movzx eax, al
test byte [eax + 0x4b5520], 4
je 0x47133a
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x471316
mov esi, 1
inc edx
jmp 0x471351
mov cl, byte [ecx]
test cl, cl
je 0x471332
cmp cl, 0x7d
je 0x471332
mov eax, 0xffffffe4
jmp 0x4715a3
xor esi, esi
cmp byte [edx + 1], 0x2d
jne 0x47135f
mov ecx, 1
inc edx
jmp 0x471361
xor ecx, ecx
movzx ebx, byte [edx + 1]
xor eax, eax
test byte [ebx + 0x4b5520], 4
je 0x47139c
movzx ebx, byte [edx + 1]
inc edx
lea eax, [eax + eax*4]
lea eax, [ebx + eax*2 - 0x30]
movzx ebx, byte [edx + 1]
test byte [ebx + 0x4b5520], 4
jne 0x471370
test eax, eax
jns 0x47139c
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x3d
jmp 0x47158e
test esi, esi
je 0x4713b5
inc edx
cmp byte [edx], 0x7d
je 0x4713b5
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x39
jmp 0x47158e
test eax, eax
jne 0x4713c8
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x3a
jmp 0x4715a3
test ecx, ecx
je 0x4713e4
cmp eax, edi
jle 0x4713df
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0xf
jmp 0x47158e
sub edi, eax
lea eax, [edi + 1]
mov ecx, 0xffffffdd
sub ecx, eax
mov eax, ecx
jmp 0x47158e
mov eax, 0xffffffe5
jmp 0x4715a3
cmp dword [esp + 0x24], 0
jne 0x47144b
mov eax, ecx
movzx ecx, byte [edx + 1]
test byte [ecx + 0x4b5520], 4
mov esi, edx
je 0x47142d
movzx ecx, byte [edx + 1]
inc edx
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
movzx ecx, byte [edx + 1]
test byte [ecx + 0x4b5520], 4
jne 0x471414
test eax, eax
jns 0x471440
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x3d
jmp 0x47158e
cmp eax, 0xa
jl 0x4713e4
cmp eax, edi
jle 0x4713e4
mov edx, esi
movzx eax, byte [edx]
cmp eax, 0x38
jl case.0x4712df.0
dec edx
xor eax, eax
jmp 0x4715a3
sub eax, 0x30
mov edi, edi
mov cl, byte [edx + 1]
inc ebx
cmp cl, 0x30
jb 0x47147c
cmp cl, 0x37
ja 0x47147c
movzx ecx, byte [edx + 1]
inc edx
lea eax, [ecx + eax*8 - 0x30]
cmp ebx, 2
jl 0x471460
test ebp, ebp
jne 0x47158e
cmp eax, 0xff
jle 0x47158e
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x33
jmp 0x47158e
cmp byte [edx + 1], 0x7b
jne 0x471516
movzx esi, byte [edx + 2]
lea edi, [edx + 2]
xor ecx, ecx
xor eax, eax
test byte [esi + 0x4b5520], 8
je 0x4714f1
inc edi
test eax, eax
jne 0x4714c2
cmp esi, 0x30
je 0x4714e5
inc ecx
cmp esi, 0x61
jl 0x4714cb
sub esi, 0x20
xor ebx, ebx
cmp esi, 0x41
setge bl
shl eax, 4
dec ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub eax, ebx
mov ebx, dword [esp + 0x10]
add eax, esi
movzx esi, byte [edi]
test byte [esi + 0x4b5520], 8
jne 0x4714b8
cmp byte [edi], 0x7d
jne 0x471516
test eax, eax
js 0x471508
neg ebp
sbb ebp, ebp
and ebp, 6
add ebp, 2
cmp ecx, ebp
jle 0x471512
mov edx, dword [esp + 0x1c]
mov dword [edx], 0x22
mov edx, edi
jmp 0x47158e
xor eax, eax
jmp 0x471520
movzx ecx, byte [edx + 1]
inc ebx
test byte [ecx + 0x4b5520], 8
je 0x47158e
movzx esi, byte [edx + 1]
inc edx
cmp esi, 0x61
jl 0x47153b
sub esi, 0x20
xor ecx, ecx
cmp esi, 0x41
setge cl
shl eax, 4
dec ecx
and ecx, 0xfffffff9
add ecx, 0x37
sub eax, ecx
add eax, esi
cmp ebx, 2
jl 0x471520
jmp 0x47158e
movzx eax, byte [edx + 1]
inc edx
test eax, eax
jne 0x47156d
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 2
jmp 0x4715a3
lea ecx, [eax - 0x61]
cmp ecx, 0x19
ja 0x471578
sub eax, 0x20
xor eax, 0x40
jmp 0x47158e
test byte [esp + 0x20], 0x40
je 0x47158e
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 3
cmp eax, 0xfffffff4
jne 0x4715a3
cmp byte [edx + 1], 0x7b
jne 0x4715a3
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x25
test dword [esp + 0x20], 0x20000000
pop edi
pop esi
pop ebp
pop ebx
je 0x4715c4
lea ecx, [eax + 0xb]
cmp ecx, 5
mov ecx, dword [esp + 8]
mov dword [ecx], edx
ja 0x4715ca
sub eax, 0x17
pop ecx
ret
mov ecx, dword [esp + 8]
mov dword [ecx], edx
pop ecx
ret