Function at 0x41c800
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc
mov ebx, dword [ebp + 0x10]
xor ecx, ecx
mov esi, 0
mov eax, ebx
sub eax, 0x1a
cmovb eax, ecx
mov dword [ebp - 0x18], eax
jbe 0x41cad8
xor esi, esi
mov ecx, 0x20
nop dword [eax + eax]
lea edx, [esi + 0x1a]
cmp edx, ebx
ja 0x41cd05
mov eax, dword [ebp + 0x18]
test ecx, ecx
je 0x41cd11
cmp ecx, eax
ja 0x41cd1f
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x10], esi
mov edx, dword [eax + esi]
mov eax, dword [ebp + 0x14]
bswap edx
mov esi, edx
shr esi, 0x1a
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0x14
and esi, 0x3f
mov byte [eax + ecx - 0x20], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0xe
and esi, 0x3f
mov byte [eax + ecx - 0x1f], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 8
and esi, 0x3f
mov byte [eax + ecx - 0x1e], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 2
and esi, 0x3f
mov byte [eax + ecx - 0x1d], bl
movzx ebx, byte [edi + esi + 3]
mov esi, dword [ebp - 0x10]
mov byte [eax + ecx - 0x1c], bl
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebx + esi + 4]
mov esi, dword [ebp + 8]
bswap edi
shld edx, edi, 4
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0x1b], dl
mov edx, edi
shr edi, 0x10
shr edx, 0x16
and edi, 0x3f
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0x1a], dl
movzx edx, byte [esi + edi + 3]
mov edi, esi
mov byte [eax + ecx - 0x19], dl
mov edx, dword [ebp - 0x10]
mov edx, dword [ebx + edx + 6]
bswap edx
mov esi, edx
shr esi, 0x1a
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0x14
and esi, 0x3f
mov byte [eax + ecx - 0x18], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0xe
and esi, 0x3f
mov byte [eax + ecx - 0x17], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 8
and esi, 0x3f
mov byte [eax + ecx - 0x16], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 2
and esi, 0x3f
mov byte [eax + ecx - 0x15], bl
movzx ebx, byte [edi + esi + 3]
mov esi, dword [ebp - 0x10]
mov byte [eax + ecx - 0x14], bl
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebx + esi + 0xa]
mov esi, dword [ebp + 8]
bswap edi
shld edx, edi, 4
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0x13], dl
mov edx, edi
shr edi, 0x10
shr edx, 0x16
and edi, 0x3f
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0x12], dl
movzx edx, byte [esi + edi + 3]
mov edi, esi
mov byte [eax + ecx - 0x11], dl
mov edx, dword [ebp - 0x10]
mov edx, dword [ebx + edx + 0xc]
bswap edx
mov esi, edx
shr esi, 0x1a
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0x14
and esi, 0x3f
mov byte [eax + ecx - 0x10], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0xe
and esi, 0x3f
mov byte [eax + ecx - 0xf], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 8
and esi, 0x3f
mov byte [eax + ecx - 0xe], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 2
and esi, 0x3f
mov byte [eax + ecx - 0xd], bl
movzx ebx, byte [edi + esi + 3]
mov esi, dword [ebp - 0x10]
mov byte [eax + ecx - 0xc], bl
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebx + esi + 0x10]
mov esi, dword [ebp + 8]
bswap edi
shld edx, edi, 4
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0xb], dl
mov edx, edi
shr edi, 0x10
shr edx, 0x16
and edi, 0x3f
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx - 0xa], dl
movzx edx, byte [esi + edi + 3]
mov edi, esi
mov byte [eax + ecx - 9], dl
mov edx, dword [ebp - 0x10]
mov edx, dword [ebx + edx + 0x12]
bswap edx
mov esi, edx
shr esi, 0x1a
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0x14
and esi, 0x3f
mov byte [eax + ecx - 8], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 0xe
and esi, 0x3f
mov byte [eax + ecx - 7], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 8
and esi, 0x3f
mov byte [eax + ecx - 6], bl
movzx ebx, byte [edi + esi + 3]
mov esi, edx
shr esi, 2
and esi, 0x3f
mov byte [eax + ecx - 5], bl
movzx ebx, byte [edi + esi + 3]
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp + 0xc]
mov edi, dword [edi + esi + 0x16]
mov byte [eax + ecx - 4], bl
mov ebx, dword [ebp + 8]
add esi, 0x18
bswap edi
shld edx, edi, 4
and edx, 0x3f
movzx edx, byte [ebx + edx + 3]
mov byte [eax + ecx - 3], dl
mov edx, edi
shr edi, 0x10
shr edx, 0x16
and edi, 0x3f
and edx, 0x3f
movzx edx, byte [ebx + edx + 3]
mov dh, byte [ebx + edi + 3]
mov ebx, dword [ebp + 0x10]
mov byte [eax + ecx - 2], dl
mov byte [eax + ecx - 1], dh
add ecx, 0x20
cmp esi, dword [ebp - 0x18]
jbe 0x41c830
add ecx, 0xffffffe0
mov edx, 0xaaaaaaab
mov eax, ebx
mul edx
shr edx, 1
lea edx, [edx + edx*2]
cmp esi, edx
mov eax, edx
mov dword [ebp - 0x14], edx
jae 0x41cc50
nop word cs:[eax + eax]
nop dword [eax]
cmp esi, 0xfffffffc
ja 0x41cd2d
lea edx, [esi + 3]
cmp edx, ebx
ja 0x41cd3c
lea eax, [ecx + 4]
cmp ecx, 0xfffffffb
ja 0x41cd4b
cmp eax, dword [ebp + 0x18]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x10], eax
ja 0x41cd57
mov eax, dword [ebp + 0xc]
mov edi, esi
movzx ebx, byte [eax + esi]
movzx edx, byte [eax + edi + 1]
mov eax, dword [ebp + 8]
mov esi, ebx
mov dh, dl
shl bl, 4
shl dl, 2
shr dh, 4
shr esi, 2
or dh, bl
movzx ebx, byte [eax + esi + 3]
mov eax, dword [ebp + 0x14]
movzx esi, dh
and esi, 0x3f
mov byte [eax + ecx], bl
mov ebx, dword [ebp + 8]
mov dh, byte [ebx + esi + 3]
mov esi, dword [ebp + 0xc]
movzx ebx, byte [esi + edi + 2]
mov byte [eax + ecx + 1], dh
mov esi, dword [ebp + 8]
mov dh, bl
and ebx, 0x3f
shr dh, 6
or dh, dl
movzx edx, dh
and edx, 0x3f
movzx edx, byte [esi + edx + 3]
mov byte [eax + ecx + 2], dl
movzx edx, byte [esi + ebx + 3]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp + 0x10]
mov byte [eax + ecx + 3], dl
mov edx, dword [ebp - 0x10]
cmp esi, dword [ebp - 0x14]
mov ecx, edx
jb 0x41cb00
mov ecx, ebx
sub ecx, dword [ebp - 0x14]
cmp ecx, 1
je 0x41cc60
mov esi, dword [ebp + 0x18]
cmp ecx, 2
jne 0x41ccb3
cmp edx, esi
jae 0x41ccbd
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp + 0x14]
movzx ecx, byte [eax + edi]
mov eax, dword [ebp + 8]
inc edi
mov dword [ebp - 0x10], ecx
shr ecx, 2
cmp edi, ebx
movzx ecx, byte [eax + ecx + 3]
mov byte [esi + edx], cl
mov esi, edi
jae 0x41ccc9
mov eax, dword [ebp + 0x18]
lea ecx, [edx + 1]
cmp ecx, eax
jae 0x41ccd5
mov eax, dword [ebp + 0xc]
mov ebx, edx
movzx ecx, byte [eax + esi]
mov eax, dword [ebp - 0x10]
mov edx, ecx
shl al, 4
shr dl, 4
or al, dl
movzx edx, al
mov eax, dword [ebp + 8]
and edx, 0x3f
movzx edx, byte [eax + edx + 3]
mov eax, dword [ebp + 0x14]
mov byte [eax + ebx + 1], dl
mov eax, dword [ebp + 0x18]
lea edx, [ebx + 2]
cmp edx, eax
jae 0x41cce1
shl cl, 2
mov edi, ebx
mov esi, 3
and cl, 0x3c
jmp 0x41cc9e
mov edx, ecx
mov ecx, ebx
sub ecx, dword [ebp - 0x14]
cmp ecx, 1
jne 0x41cbbd
mov esi, dword [ebp + 0x18]
cmp edx, esi
jae 0x41cced
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x14]
mov ebx, edx
mov edi, dword [ebp + 0x14]
movzx ecx, byte [eax + ecx]
mov eax, dword [ebp + 8]
mov edx, ecx
shr edx, 2
movzx edx, byte [eax + edx + 3]
mov byte [edi + ebx], dl
lea edx, [ebx + 1]
cmp edx, esi
jae 0x41ccf9
shl cl, 4
mov edi, ebx
mov esi, 2
and cl, 0x30
mov eax, dword [ebp + 8]
movzx ecx, cl
mov ebx, dword [ebp + 0x14]
movzx ecx, byte [eax + ecx + 3]
mov byte [ebx + edx], cl
mov edx, edi
add edx, esi
mov eax, edx
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x4bc838
push esi
push edx
call dbg.panic_bounds_check
push 0x4bc848
push ebx
push esi
call dbg.panic_bounds_check
push 0x4bc858
push eax
push ecx
call dbg.panic_bounds_check
push 0x4bc868
push eax
push edx
call dbg.panic_bounds_check
push 0x4bc878
push esi
push edx
call dbg.panic_bounds_check
push 0x4bc888
push esi
push edx
call dbg.panic_bounds_check
push 0x4bc8b8
push ebx
push edx
call dbg.slice_end_index_len_fail
push 0x4bc8c8
push 0
push 0xffffffffffffffe0
call dbg.slice_index_order_fail
push 0x4bc8c8
push dword [ebp + 0x18]
push ecx
call dbg.slice_end_index_len_fail
lea eax, [esi + 3]
push 0x4bc898
push eax
push esi
call dbg.slice_index_order_fail
add esi, 3
push 0x4bc898
push ebx
push esi
call dbg.slice_end_index_len_fail
push 0x4bc8a8
push eax
push ecx
call dbg.slice_index_order_fail
push 0x4bc8a8
push dword [ebp + 0x18]
push dword [ebp - 0x10]
call dbg.slice_end_index_len_fail
nop word [eax + eax]