Function at 0x408020
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x10]
lea ecx, [eax + 0x10]
mov dword [ebp - 0xc], ecx
mov ecx, edx
xor ecx, dword [ebp + 0xc]
cmp dword [eax + 0x14], 0x10
mov dword [ebp + 0xc], ecx
jb 0x408045
mov eax, dword [eax]
mov dword [ebp + 8], eax
shr edx, 2
mov dword [ebp - 8], edx
mov dword [ebp - 4], 0
push esi
test edx, edx
je 0x40834e
push ebx
push edi
nop dword [eax]
or eax, 0x140
shl ecx, 0xef
rcl eax, 0xce
imul dx
movzx eax, al
sub ax, 0x2a3
imul cx
shl ebx, 0x20
ror eax, 0x94
rcl di, 0x31
dec cx
dec dx
shl ax, 0x3f
dec edx
shr esi, 0xa0
sub edx, 0x2be
movzx ebx, dh
rcl di, 0xb9
shr ebx, 0x6e
shl si, 0x80
xor ecx, 0xf6
mul edx
jb 0x4080c3
or edx, ecx
or dx, 0x301
xor ebx, edx
xor dx, 0x359
shr edi, 0x68
shl cx, 0x18
jmp 0x4080e3
mov bx, dx
rcl esi, 0xf6
dec ebx
mov dx, 0xe
imul cx
dec bx
xor ax, bx
rol dx, 0x3a
add si, 0x31a
or ax, 0x9d
inc dx
sub esi, esi
jne 0x40810f
test ecx, 3
ja 0x40815c
mov ebx, ecx
ror ecx, 0x32
shr bx, 0x4f
dec ebx
mul edi
mul si
rcr edx, 0xe4
movsx esi, dh
ror di, 0x85
mul ax
jmp 0x40812d
movzx edx, dh
mul edi
shl edi, 0xff
dec cx
shr esi, 0x82
mul eax
sub dx, 0x3d
add esi, 0x329
inc bx
rcl ebx, 0x82
mov eax, esi
xor edx, 0x85
or ecx, 0xfd
jb 0x40815c
cmp ebx, 0x4e
je 0x40817e
shl si, 0x67
and ebx, 0x196
xor edi, esi
rcr ebx, 0x37
and eax, 0x118
shl cx, 0x9a
jmp 0x408162
rcl si, 0x9e
mov edx, eax
mov di, bx
rol dx, 0xb0
movsx edx, di
mul si
shl ax, 0xb9
inc dx
jb 0x40817e
inc ebx
rol ax, 0x61
jmp 0x408193
imul bx
inc cx
shl esi, 0x8a
sub dx, 0x343
dec edi
rcl dx, 3
movsx eax, bl
mul ebx
rcr ecx, 0xea
jb 0x4081a8
or ax, 0x3a3
inc edi
inc esi
mul esi
mul edx
imul ecx
jmp 0x4081b0
xor bx, cx
sub eax, 0x31c
and ecx, esi
or eax, 0x3a7
shl dx, 0x55
shr esi, 0xb9
add ax, 0x288
mul di
and ecx, 0x165
jae 0x4081ea
test edx, 0x27
ja 0x408218
shr cx, 0xef
movsx eax, dh
movzx eax, bl
mul di
rcr ecx, 0x7e
shl ebx, 0x94
jmp 0x408203
rcr esi, 0x49
and edi, ecx
inc cx
imul edi
add edx, esi
shr esi, 0x38
shl ebx, 0xf1
and di, 0xbe
imul cx
rcl esi, 8
dec edx
jb 0x408218
xor ax, bx
dec di
dec di
rol edx, 0x64
imul cx
jmp 0x408219
inc edi
add eax, 0x274
or ecx, 0x108
mul di
mul ecx
rcl di, 0x7d
shr dx, 0x25
and eax, 0x334
dec ecx
shr cx, 0xf0
inc esi
ja 0x408243
add si, cx
jmp 0x40825a
imul di
and cx, si
inc si
imul si
rcl bx, 0x35
mul edx
and edx, 0x15b
inc cx
rol ecx, 0xa4
movsx edx, bh
rcr ecx, 0xe0
jb 0x40828a
rcr cx, 0xd3
dec esi
rol ax, 0xbe
mul cx
rol cx, 0x5e
or ebx, esi
sub dx, 0x75
shr esi, 0xa
sub esi, 0x1b0
add ecx, esi
jmp 0x40829b
mul ecx
rol esi, 0x92
shl cx, 5
dec bx
dec esi
ror ecx, 0xe5
add ebx, edi
rol edi, 0x63
inc si
inc si
add eax, edx
dec cx
and bx, 0x2e7
push str.Z81xbyuAua
push 0x4af2b0
call fcn.004018a0
mov edi, eax
add esp, 8
mov ecx, dword [edi]
mov ecx, dword [ecx + 4]
mov ecx, dword [ecx + edi + 0x30]
mov esi, dword [ecx + 4]
mov ecx, esi
mov dword [ebp - 0x10], esi
mov edx, dword [esi]
call dword [edx + 4]
lea eax, [ebp - 0x14]
push eax
call fcn.00401fd0
add esp, 4
mov ecx, eax
mov edx, dword [eax]
push 0xa
call dword [edx + 0x30]
movzx ebx, ax
test esi, esi
je 0x408304
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
test eax, eax
je 0x408304
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
push ebx
mov ecx, edi
call fcn.00408560
mov ecx, edi
call fcn.00407830
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 8]
imul ecx, dword [eax + edx*4], 0x5bd1e991
inc edx
mov dword [ebp - 4], edx
mov eax, ecx
shr eax, 0x18
xor eax, ecx
imul ecx, eax, 0x5bd1e991
imul eax, dword [ebp + 0xc], 0x5bd1e991
xor ecx, eax
mov dword [ebp + 0xc], ecx
cmp edx, dword [ebp - 8]
jl 0x408060
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 8]
pop edi
pop ebx
lea esi, [eax + edx*4]
mov eax, dword [ebp - 0xc]
xor edx, edx
mov eax, dword [eax]
and eax, 3
sub eax, 1
je 0x40837a
sub eax, 1
je 0x408371
sub eax, 1
jne 0x408387
movsx edx, byte [esi + 2]
shl edx, 0x10
movsx eax, byte [esi + 1]
shl eax, 8
xor edx, eax
movsx eax, byte [esi]
xor eax, edx
imul eax, eax, 0x5bd1e991
xor ecx, eax
mov eax, ecx
shr eax, 0xd
xor eax, ecx
imul ecx, eax, 0x5bd1e991
pop esi
mov eax, ecx
shr eax, 0xf
xor eax, ecx
mov esp, ebp
pop ebp
ret