Function at 0x43ed50
Capabilities:
Encode data using base64

Disassembly:
mov eax, dword [0x5f38b4]
test eax, eax
jne 0x43ed63
call fcn.00477bc0
call fcn.0045f6a0
mov al, byte [0x4f343e]
push ebx
push esi
push edi
test al, al
jne 0x43ed91
mov eax, dword [0x5e7ec0]
test eax, eax
jne 0x43ed91
mov eax, dword [0x61e780]
test eax, eax
jne 0x43ed91
mov eax, dword [0x5fee00]
test eax, eax
jne 0x43ed91
mov ebx, 1
jmp 0x43ed93
xor ebx, ebx
xor edi, edi
mov esi, 0x5c8a8c
mov eax, dword [esi - 0x70]
test eax, eax
je 0x43edc6
cmp dword [esi], 0
je 0x43edc6
test ebx, ebx
je 0x43edb3
push edi
call fcn.00461ac0
add esp, 4
lea eax, [esi + 4]
push eax
push edi
call fcn.004357d0
push edi
call fcn.0043ebe0
add esp, 0xc
add esi, 0x5a4
inc edi
cmp esi, 0x5d3f0c
jl 0x43ed9a
cmp dword [0x5f37e8], 1
jne 0x43ee58
mov al, byte [0x4d268d]
test al, al
je 0x43ee61
call fcn.00498650
mov eax, dword [0x5f37ec]
lea ecx, [eax + eax*4]
lea ecx, [ecx + ecx*8]
lea edx, [eax + ecx*8]
mov eax, dword [edx*4 + 0x5c897c]
cmp eax, 0x59
jne 0x43ee1d
push 0
push 0x24
call fcn.00464a20
push 0
push 0x80
push 0xcb
jmp 0x43ee4c
cmp eax, 0x3d
push 0
jne 0x43ee39
push 0x23
call fcn.00464a20
push 0
push 0x80
push 0xca
jmp 0x43ee4c
push 0x22
call fcn.00464a20
push 0
push 0x80
push 0xc9
push 0
push 0
call fcn.00477d10
add esp, 0x1c
mov eax, dword [0x5f37e8]
test eax, eax
je 0x43ee67
inc dword [0x5f37e8]
call fcn.0042fd30
mov eax, dword [0x5f38b4]
test eax, eax
jne 0x43ee99
xor edi, edi
mov esi, 0x5c8a8c
cmp dword [esi], 0
je 0x43ee8a
push edi
call fcn.00434dc0
add esp, 4
add esi, 0x5a4
inc edi
cmp esi, 0x5d3f0c
jl 0x43ee7c
mov eax, dword [0x5ae6e0]
pop edi
pop esi
pop ebx
test eax, eax
jle 0x43eec3
mov eax, dword [0x4df9ec]
test eax, eax
je 0x43eeb5
call fcn.004870e0
jmp 0x43eec3
mov eax, dword [0x4df9f0]
test eax, eax
je 0x43eec3
call fcn.00485190
call fcn.0046d290
call fcn.0046f570
mov edx, dword [0x5f37c4]
cmp edx, 0x7fffffff
jge 0x43ef0e
mov eax, dword [0x5adbc0]
and eax, 0x3ff
mov ecx, dword [eax*4 + 0x4c692c]
mov eax, dword [0x5f37c8]
lea eax, [eax + ecx*8]
lea ecx, [edx + 0x10000]
cmp eax, ecx
jg 0x43ef08
lea ecx, [edx - 0x10000]
cmp eax, ecx
jge 0x43ef0e
mov dword [0x5f37c4], ecx
jmp 0x477f00
mov al, byte [0x4d268d]
sub esp, 8
test al, al
je 0x478129
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [esp + 0x14], esi
mov ebp, 0x4f04c8
cmp dword [ebp + 0x1c], esi
je case.0x47806e.2
cmp dword [ebp], esi
jne 0x477f3a
mov edi, dword [ebp + 0x14]
mov ecx, 0x20
jmp 0x478021
mov dword [esp + 0x10], esi
xor edi, edi
mov ebx, 0x5c8a8c
cmp dword [ebx - 0x70], esi
je 0x477fe6
cmp dword [ebx], esi
je 0x477fe6
mov eax, dword [ebp]
mov ecx, dword [ebx - 0x580]
sub eax, ecx
cdq
and edx, 0x7ffff
add eax, edx
mov edx, dword [ebx - 0x57c]
mov esi, eax
mov eax, dword [ebp + 4]
sub eax, edx
cdq
and edx, 0x3ffff
add eax, edx
sar eax, 0x12
mov ecx, eax
sar esi, 0x13
imul ecx, eax
mov eax, esi
imul eax, esi
add ecx, eax
cmp ecx, 0x30
jle 0x477faf
mov eax, 0x2aaaaaab
imul ecx
mov eax, dword [ebp + 0x14]
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
sub eax, edx
jmp 0x477fb2
mov eax, dword [ebp + 0x14]
cmp eax, edi
jle 0x477fb8
mov edi, eax
test eax, eax
jle 0x477fe4
mov eax, esi
imul eax, edi
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
cmp eax, 0xffffffe1
jge 0x477fd6
mov eax, 0xffffffe1
jmp 0x477fe0
cmp eax, 0x1f
jle 0x477fe0
mov eax, 0x1f
add dword [esp + 0x10], eax
xor esi, esi
add ebx, 0x5a4
cmp ebx, 0x5d3f0c
jl 0x477f45
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffe0
jge 0x478007
mov dword [esp + 0x10], esi
jmp 0x47801d
cmp eax, 0x20
jle 0x478016
mov dword [esp + 0x10], 0x40
jmp 0x47801d
add eax, 0x20
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
cmp edi, 0x3f
jle 0x47802d
mov edi, 0x3f
jmp 0x478033
cmp edi, esi
jge 0x478033
xor edi, edi
mov eax, dword [ebp + 0x10]
cmp eax, esi
jne 0x47803d
or eax, 0xffffffff
mov edx, dword [ebp + 4]
mov ebx, dword [0x5f37c4]
cmp edx, ebx
jle 0x478055
mov ebx, 0x14
mov dword [esp + 0x10], ebx
jmp 0x478061
mov edx, dword [0x5f37fc]
mov dword [esp + 0x10], edx
mov ebx, edx
mov edx, dword [ebp + 0x1c]
dec edx
cmp edx, 0xc
ja case.default.0x47806e
jmp dword [edx*4 + 0x478374]
cmp edi, 4
jl case.default.0x47806e
push esi
push ecx
push edi
push eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax*4 + 0x57ab60]
push ecx
call fcn.004984f0
add esp, 0x14
mov dword [ebp + 8], eax
mov dword [ebp + 0x1c], 7
jmp case.0x47806e.2
cmp edi, 4
jl case.default.0x47806e
mov edx, dword [ebp + 0xc]
push esi
push ecx
push edi
push eax
mov eax, dword [edx*4 + 0x57ab60]
push eax
jmp 0x4780d2
cmp edi, 4
jl case.default.0x47806e
mov edx, 0x3f
push esi
sub edx, ecx
push edx
push edi
push eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax*4 + 0x57ab60]
push ecx
call fcn.004984f0
add esp, 0x14
mov dword [ebp + 8], eax
mov dword [ebp + 0x1c], 2
jmp case.0x47806e.2
mov edx, dword [ebp + 8]
push ecx
push edi
push eax
push edx
call fcn.00498590
add esp, 0x10
mov dword [ebp + 0x1c], 8
jmp case.0x47806e.2
mov eax, dword [ebp + 8]
push eax
call fcn.00498610
add esp, 4
mov dword [ebp + 0x1c], esi
mov edx, dword [esp + 0x14]
add ebp, 0x20
inc edx
cmp ebp, 0x4f08c8
mov dword [esp + 0x14], edx
jl 0x477f1f
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov ecx, dword [ebp + 8]
push ecx
jmp 0x478102
mov edx, dword [ebp + 0xc]
push 1
push 0x20
push 0xff
mov eax, dword [edx*4 + 0x57ab60]
push 0xffffffffffffffff
push eax
call fcn.004984f0
add esp, 0x14
mov dword [ebp + 8], eax
mov dword [ebp + 0x1c], 0xa
jmp case.0x47806e.2
cmp edi, 4
jl case.default.0x47806e
push esi
push ecx
mov ecx, dword [ebp + 0xc]
push edi
push eax
mov edx, dword [ecx*4 + 0x57ab60]
push edx
call fcn.004984f0
mov dword [ebp + 8], eax
mov eax, dword [0x5adbc0]
add esp, 0x14
and eax, 0xff
mov dword [ebp + 0x1c], 0xb
mov dword [ebp + 0x18], eax
jmp case.0x47806e.2
mov eax, dword [0x5adbc0]
mov ecx, dword [ebp + 0x18]
and eax, 0xff
sub eax, ecx
jns 0x4781ab
add eax, 0x100
cmp eax, ebx
jle case.0x47806e.2
call fcn.00477c10
cmp eax, 0x20
jge 0x478209
cmp eax, dword [esp + 0x14]
je 0x478209
shl eax, 5
mov ebx, eax
mov ecx, 8
mov esi, ebp
lea edi, [ebx + 0x4f04c8]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x4f04dc]
cmp eax, 0x3f
jle 0x4781ee
mov dword [ebx + 0x4f04dc], 0x1f
jmp 0x4781f9
cdq
sub eax, edx
sar eax, 1
mov dword [ebx + 0x4f04dc], eax
mov dword [ebx + 0x4f04e4], 5
mov ebx, dword [esp + 0x10]
xor esi, esi
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
test eax, eax
jle 0x478365
mov ecx, dword [0x5adbc0]
mov dword [ebp + 0x1c], 0xc
and ecx, 0xff
mov dword [ebp + 0x18], ecx
jmp case.0x47806e.2
mov ecx, dword [0x5adbc0]
mov eax, dword [ebp + 0x18]
and ecx, 0xff
sub ecx, eax
jns 0x47824c
add ecx, 0x100
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
jle case.0x47806e.2
call fcn.00477c10
cmp eax, 0x20
jge 0x4782b5
cmp eax, dword [esp + 0x14]
je 0x4782b5
shl eax, 5
mov ebx, eax
mov ecx, 8
mov esi, ebp
lea edi, [ebx + 0x4f04c8]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x4f04dc]
cmp eax, 0x3f
jle 0x478296
mov dword [ebx + 0x4f04dc], 0xf
jmp 0x4782a5
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [ebx + 0x4f04dc], eax
mov dword [ebx + 0x4f04e4], 5
mov ebx, dword [esp + 0x10]
xor esi, esi
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
test eax, eax
jle 0x478365
mov edx, dword [0x5adbc0]
mov dword [ebp + 0x1c], 0xd
and edx, 0xff
mov dword [ebp + 0x18], edx
jmp case.0x47806e.2
mov ecx, dword [0x5adbc0]
mov eax, dword [ebp + 0x18]
and ecx, 0xff
sub ecx, eax
jns 0x4782fc
add ecx, 0x100
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp ecx, eax
jle case.0x47806e.2
call fcn.00477c10
cmp eax, 0x20
jge 0x478365
cmp eax, dword [esp + 0x14]
je 0x478365
shl eax, 5
mov ebx, eax
mov ecx, 8
mov esi, ebp
lea edi, [ebx + 0x4f04c8]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x4f04dc]
cmp eax, 0x3f
jle 0x47834a
mov dword [ebx + 0x4f04dc], 7
jmp 0x478359
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [ebx + 0x4f04dc], eax
mov dword [ebx + 0x4f04e4], 1
xor esi, esi
mov dword [ebp + 0x1c], 2
jmp case.0x47806e.2