Function at 0x557880
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 0xc]
sub esp, 0x1c
test ecx, ecx
jne 0x557893
xor eax, eax
mov esp, ebp
pop ebp
ret
mov eax, 0xaaaaaaab
mul ecx
push ebx
mov ebx, dword [ebp + 0x10]
mov ecx, ebx
push esi
mov esi, edx
shr esi, 1
push edi
lea eax, [esi*4 + 4]
push eax
call fcn.0044eab0
mov eax, dword [ebp + 0xc]
lea ecx, [esi + esi*2]
mov edi, dword [ebp + 8]
sub ecx, eax
mov dword [ebp - 0x10], edi
lea edx, [edi + eax]
mov eax, dword [ebx + 0x10]
add ecx, edx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], eax
cmp edi, ecx
jae 0x557aab
mov ecx, dword [0x7f44c8]
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 0x18], ecx
nop dword [eax]
mov eax, dword [0x7df50c]
cmp eax, dword [ecx + 4]
jg 0x557b88
movzx edx, byte [edi]
lea eax, [edi + 2]
movzx esi, byte [edi + 1]
movzx edi, byte [eax]
inc eax
mov ecx, dword [0x7df508]
mov dword [ebp + 8], eax
mov dword [ebp - 0x10], eax
mov eax, edx
shr eax, 2
and edx, 3
shl edx, 4
movzx eax, byte [eax + ecx]
mov byte [ebp - 4], al
mov eax, esi
shr eax, 4
and esi, 0xf
or edx, eax
shl esi, 2
movzx eax, byte [edx + ecx]
mov edx, dword [ebx + 0x14]
mov byte [ebp - 3], al
mov eax, edi
shr eax, 6
and edi, 0x3f
or eax, esi
mov dword [ebp - 0xc], edx
movzx eax, byte [eax + ecx]
mov byte [ebp - 2], al
movzx eax, byte [edi + ecx]
mov ecx, dword [ebx + 0x10]
mov byte [ebp - 1], al
mov eax, edx
sub eax, ecx
mov dword [ebp - 8], ecx
cmp eax, 4
jb 0x557995
lea eax, [ecx + 4]
mov dword [ebx + 0x10], eax
mov eax, ebx
cmp edx, 0x10
jb 0x55797d
mov eax, dword [ebx]
lea esi, [eax + ecx]
push 4
lea eax, [ebp - 4]
push eax
push esi
call fcn.006f6ff0
mov byte [esi + 4], 0
jmp 0x557a95
mov eax, closesocket
sub eax, ecx
cmp eax, 4
jb 0x557bf9
lea edi, [ecx + 4]
or edi, 0xf
cmp edi, 0x7fffffff
jbe 0x5579ba
mov edi, closesocket
jmp 0x5579d8
mov esi, edx
mov eax, closesocket
shr esi, 1
sub eax, esi
cmp edx, eax
jbe 0x5579d0
mov edi, closesocket
jmp 0x5579d8
lea eax, [esi + edx]
cmp edi, eax
cmovb edi, eax
lea edx, [edi + 1]
cmp edx, 0x1000
jb 0x557a0f
lea eax, [edx + 0x23]
mov ecx, 0xffffffff
cmp eax, edx
cmovbe eax, ecx
push eax
call fcn.006f4b6f
add esp, 4
test eax, eax
je 0x557bbe
mov ecx, dword [ebp - 8]
lea esi, [eax + 0x23]
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x557a25
test edx, edx
je 0x557a23
push edx
call fcn.006f4b6f
mov ecx, dword [ebp - 8]
add esp, 4
mov esi, eax
jmp 0x557a25
xor esi, esi
cmp dword [ebp - 0xc], 0x10
lea eax, [ecx + 4]
mov dword [ebx + 0x14], edi
lea edi, [esi + ecx]
mov dword [ebx + 0x10], eax
mov dword [ebp - 8], edi
push ecx
jb 0x557a83
mov edi, dword [ebx]
push edi
push esi
call fcn.006f6ff0
mov ecx, dword [ebp - 8]
add esp, 0xc
mov eax, dword [ebp - 4]
mov dword [ecx], eax
mov byte [ecx + 4], 0
mov ecx, dword [ebp - 0xc]
inc ecx
cmp ecx, 0x1000
jb 0x557a75
mov edx, dword [edi - 4]
add ecx, 0x23
sub edi, edx
lea eax, [edi - 4]
cmp eax, 0x1f
ja 0x557bbe
mov edi, edx
push ecx
push edi
call fcn.006f4b9f
add esp, 8
mov dword [ebx], esi
jmp 0x557a98
push ebx
push esi
call fcn.006f6ff0
mov eax, dword [ebp - 4]
mov dword [edi], eax
mov byte [edi + 4], 0
mov dword [ebx], esi
add esp, 0xc
mov edi, dword [ebp + 8]
cmp edi, dword [ebp - 0x14]
jae 0x557aa8
mov ecx, dword [ebp - 0x18]
jmp 0x5578f0
mov edx, dword [ebp + 0xc]
cmp edi, edx
jae 0x557b7b
mov eax, dword [0x7f44c8]
lea esi, [ebp - 4]
mov ecx, dword fs:[0x2c]
mov dword [ebp - 0xc], esi
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x7df504]
cmp eax, dword [ecx + 4]
jg 0x557bc3
jmp 0x557ade
mov edx, dword [ebp + 0xc]
mov eax, edx
sub eax, edi
cmp eax, 3
jb 0x557afd
lea eax, [ebp - 0xc]
push eax
push edx
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp + 0xf]
call fcn.0055a310
mov esi, dword [ebp - 0xc]
jmp 0x557b6d
cmp eax, 1
jbe 0x557b3f
movzx edx, byte [edi]
mov ecx, dword [0x7df500]
mov eax, edx
movzx esi, byte [edi + 1]
and edx, 3
shr eax, 2
shl edx, 4
movzx eax, byte [eax + ecx]
mov byte [ebp - 4], al
mov eax, esi
shr eax, 4
or eax, edx
and esi, 0xf
movzx eax, byte [eax + ecx]
mov byte [ebp - 3], al
movzx eax, byte [ecx + esi*4]
mov byte [ebp - 2], al
mov byte [ebp - 1], 0x3d
jmp 0x557b6a
test eax, eax
je 0x557b6d
movzx edx, byte [edi]
mov ecx, dword [0x7df500]
mov eax, edx
shr eax, 2
and edx, 3
add edx, edx
movzx eax, byte [eax + ecx]
mov byte [ebp - 4], al
movzx eax, byte [ecx + edx*8]
mov byte [ebp - 3], al
mov word [ebp - 2], 0x3d3d
lea esi, [ebp]
lea eax, [ebp - 4]
mov ecx, ebx
sub esi, eax
push esi
push eax
call fcn.0044ef80
mov eax, dword [ebx + 0x10]
sub eax, dword [ebp - 0x1c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x7df50c
call fcn.006f596f
add esp, 4
cmp dword [0x7df50c], 0xffffffff
jne 0x557901
push 0x7df50c
mov dword [0x7df508], 0x743498
call fcn.006f5925
add esp, 4
jmp 0x557901
call fcn.006fb96e
push 0x7df504
call fcn.006f596f
add esp, 4
cmp dword [0x7df504], 0xffffffff
jne 0x557adb
push 0x7df504
mov dword [0x7df500], 0x743498
call fcn.006f5925
add esp, 4
jmp 0x557adb
call fcn.0044f120
int3