Function at 0x401885
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x6c
mov eax, dword [ebp + 0x14]
mov byte [ebp - 0x2c], al
mov dword [ebp - 0x48], sym.___gxx_personality_sj0
mov dword [ebp - 0x44], 0x4d0e26
lea eax, [ebp - 0x40]
mov dword [eax], ebp
mov edx, 0x401b0f
mov dword [eax + 4], edx
mov dword [eax + 8], esp
lea eax, [ebp - 0x60]
mov dword [esp], eax
call sym.__Unwind_SjLj_Register
mov eax, dword [ebp + 0x10]
add eax, 2
mov edx, 0xaaaaaaab
mul edx
mov eax, edx
shr eax, 1
shl eax, 2
mov dword [ebp - 0x20], eax
cmp byte [ebp - 0x2c], 0
je 0x4018e1
mov eax, 0x2e
jmp 0x4018e6
mov eax, 0x3d
mov byte [ebp - 0x21], al
movzx eax, byte [ebp - 0x2c]
mov eax, dword [eax*4 + section..data]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 8]
mov ecx, eax
call fcn.004b7790
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x20]
mov dword [esp], edx
mov dword [ebp - 0x5c], 1
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.reserve_unsigned_int_
sub esp, 4
mov dword [ebp - 0x1c], 0
jmp 0x401b01
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
add eax, edx
movzx eax, byte [eax]
shr al, 2
movzx edx, al
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov dword [ebp - 0x5c], 1
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
mov eax, dword [ebp - 0x1c]
add eax, 1
cmp eax, dword [ebp + 0x10]
jae 0x401a97
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
shl eax, 4
and eax, 0x30
mov edx, eax
mov eax, dword [ebp - 0x1c]
lea ecx, [eax + 1]
mov eax, dword [ebp + 0xc]
add eax, ecx
movzx eax, byte [eax]
shr al, 4
movzx eax, al
add eax, edx
mov edx, eax
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
mov eax, dword [ebp - 0x1c]
add eax, 2
cmp eax, dword [ebp + 0x10]
jae 0x401a43
mov eax, dword [ebp - 0x1c]
lea edx, [eax + 1]
mov eax, dword [ebp + 0xc]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
shl eax, 2
and eax, 0x3c
mov edx, eax
mov eax, dword [ebp - 0x1c]
lea ecx, [eax + 2]
mov eax, dword [ebp + 0xc]
add eax, ecx
movzx eax, byte [eax]
shr al, 6
movzx eax, al
add eax, edx
mov edx, eax
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
mov eax, dword [ebp - 0x1c]
lea edx, [eax + 2]
mov eax, dword [ebp + 0xc]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
and eax, 0x3f
mov edx, eax
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
jmp 0x401afd
mov eax, dword [ebp - 0x1c]
lea edx, [eax + 1]
mov eax, dword [ebp + 0xc]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
shl eax, 2
and eax, 0x3c
mov edx, eax
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov dword [ebp - 0x5c], 1
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
movzx eax, byte [ebp - 0x21]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
jmp 0x401afd
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
add eax, edx
movzx eax, byte [eax]
movzx eax, al
shl eax, 4
and eax, 0x30
mov edx, eax
mov eax, dword [ebp - 0x28]
add eax, edx
movzx eax, byte [eax]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov dword [ebp - 0x5c], 1
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
movzx eax, byte [ebp - 0x21]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
movzx eax, byte [ebp - 0x21]
movsx edx, al
mov eax, dword [ebp + 8]
mov dword [esp], edx
mov ecx, eax
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.push_back_char_
sub esp, 4
add dword [ebp - 0x1c], 3
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x10]
jb 0x401927
jmp 0x401b31
lea eax, [ebp - 0x60]
mov dword [esp], eax
call sym.__Unwind_SjLj_Unregister
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret