Function at 0x41c770
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, ecx
lea ecx, [edx*4]
push edi
push esi
push ebx
mov ebx, edx
sub esp, 0x5c
cmp byte [esp + 0x70], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x48], 0
fild dword [esp + 0x28]
mov dword [esp + 0x4c], 0
fmul dword [0x4442e0]
mov dword [esp + 0x28], ecx
fild dword [esp + 0x28]
je 0x41ca10
fucomi st(1)
jp 0x41c9f0
jne 0x41c9f0
fstp st(0)
fstp st(0)
mov eax, ecx
mov esi, 0x55555556
sar ecx, 0x1f
imul esi
sub edx, ecx
lea eax, [edx + 6]
xor edx, eax
test eax, edx
js 0x41c9d0
test eax, eax
js 0x41cc58
lea edi, [esp + 0x48]
mov edx, eax
mov ecx, edi
mov dword [esp + 0x28], edi
call sym.6x
mov eax, ebx
imul esi
mov eax, ebx
sar eax, 0x1f
mov esi, edx
sub esi, eax
lea eax, [esi + esi*2]
mov esi, ebx
sub esi, eax
mov edi, eax
mov dword [esp + 0x2c], eax
xor eax, ebx
not eax
xor edi, esi
or eax, edi
jns 0x41c9d0
mov dword [esp + 0x30], 0
xor edi, edi
mov dword [esp + 0x38], esi
cmp edi, dword [esp + 0x2c]
je 0x41cca4
cmp ebx, edi
jle 0x41cc90
lea esi, [edi + 1]
movzx eax, byte [ebp + edi]
cmp esi, ebx
jge 0x41ccd4
movzx ecx, byte [ebp + edi + 1]
mov byte [esp + 0x34], cl
lea ecx, [edi + 2]
xor esi, ecx
test ecx, esi
js 0x41c9d0
test ecx, ecx
js 0x41cd02
cmp ecx, ebx
jge 0x41cd02
movzx edx, byte [ebp + edi + 2]
add edi, 3
xor ecx, edi
mov byte [esp + 0x3e], dl
test edi, ecx
js 0x41c9d0
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x48]
test esi, esi
js 0x41cce8
cmp ecx, esi
jle 0x41cce8
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x41c8cf
test dword [esi], 0x40000000
je 0x41c8cf
mov ecx, dword [esp + 0x28]
mov byte [esp + 0x3f], al
call sym..idata_7d
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
movzx eax, byte [esp + 0x3f]
movzx edx, byte [esp + 0x34]
shl eax, 0x10
shl edx, 8
or eax, edx
movzx edx, byte [esp + 0x3e]
or edx, eax
shr eax, 0x12
mov dword [esp + 0x34], edx
movzx eax, byte [eax + 0x4442a0]
mov edx, dword [esp + 0x30]
mov byte [esi + edx + 4], al
lea esi, [edx + 1]
cmp esi, ecx
jge 0x41cdaf
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41c925
test dword [eax], 0x40000000
je 0x41c925
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x34]
shr edx, 0xc
and edx, 0x3f
movzx edx, byte [edx + 0x4442a0]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea esi, [eax + 2]
cmp esi, ecx
jge 0x41cdaf
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41c96a
test dword [eax], 0x40000000
je 0x41c96a
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x34]
shr edx, 6
and edx, 0x3f
movzx edx, byte [edx + 0x4442a0]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea esi, [eax + 3]
cmp esi, ecx
jge 0x41cff1
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41c9ab
test dword [eax], 0x40000000
je 0x41c9ab
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x34]
add dword [esp + 0x30], 4
and edx, 0x3f
movzx edx, byte [edx + 0x4442a0]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
xor esi, eax
test eax, esi
jns 0x41c82f
call fcn.00409c50
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret 4
fld st(1)
fabs
fxch st(1)
fsubrp st(2)
fxch st(1)
fabs
fmul dword [0x4442e4]
fxch st(1)
fcompi st(1)
fstp st(0)
jb 0x41c9d0
jmp 0x41c7c5
fucomi st(1)
jp 0x41cc30
jne 0x41cc30
fstp st(0)
fstp st(0)
mov eax, ecx
mov esi, 0x55555556
sar ecx, 0x1f
imul esi
sub edx, ecx
lea eax, [edx + 6]
xor edx, eax
test eax, edx
js 0x41c9d0
test eax, eax
js 0x41cc58
lea edi, [esp + 0x48]
mov edx, eax
mov ecx, edi
mov dword [esp + 0x28], edi
call sym.6x
mov eax, ebx
imul esi
mov eax, ebx
sar eax, 0x1f
mov esi, edx
sub esi, eax
lea eax, [esi + esi*2]
mov esi, ebx
sub esi, eax
mov edi, eax
mov dword [esp + 0x2c], eax
xor eax, ebx
not eax
xor edi, esi
or eax, edi
jns 0x41c9d0
mov dword [esp + 0x30], 0
xor eax, eax
mov edi, ebx
mov dword [esp + 0x38], esi
mov esi, eax
cmp esi, dword [esp + 0x2c]
je 0x41cd16
cmp edi, esi
jle 0x41cd60
lea edx, [esi + 1]
movzx ebx, byte [ebp + esi]
cmp edi, edx
jle 0x41cc8c
lea ecx, [esi + 2]
movzx eax, byte [ebp + esi + 1]
xor edx, ecx
test ecx, edx
js 0x41c9d0
test ecx, ecx
js 0x41cd00
cmp edi, ecx
jle 0x41cd00
movzx edx, byte [ebp + esi + 2]
add esi, 3
xor ecx, esi
mov byte [esp + 0x34], dl
test esi, ecx
js 0x41c9d0
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x48]
test edx, edx
js 0x41cce8
cmp edx, ecx
jge 0x41cce8
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x41cb28
test dword [edx], 0x40000000
je 0x41cb28
mov ecx, dword [esp + 0x28]
mov byte [esp + 0x3e], al
call sym..idata_7d
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
movzx eax, byte [esp + 0x3e]
shl eax, 8
shl ebx, 0x10
or ebx, eax
movzx eax, byte [esp + 0x34]
or eax, ebx
shr ebx, 0x12
mov dword [esp + 0x34], eax
movzx eax, byte [ebx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov ebx, dword [esp + 0x30]
mov byte [edx + ebx + 4], al
add ebx, 1
cmp ecx, ebx
jle 0x41cf0e
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41cb79
test dword [eax], 0x40000000
je 0x41cb79
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x34]
shr edx, 0xc
and edx, 0x3f
movzx edx, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov byte [eax + ebx + 4], dl
mov eax, dword [esp + 0x30]
lea ebx, [eax + 2]
cmp ecx, ebx
jle 0x41d0b2
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41cbbe
test dword [eax], 0x40000000
je 0x41cbbe
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x34]
shr edx, 6
and edx, 0x3f
movzx edx, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov byte [eax + ebx + 4], dl
mov eax, dword [esp + 0x30]
lea ebx, [eax + 3]
cmp ebx, ecx
jge 0x41d0c6
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x41cbff
test dword [eax], 0x40000000
je 0x41cbff
mov ecx, dword [esp + 0x28]
call sym..idata_7d
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x34]
add dword [esp + 0x30], 4
and edx, 0x3f
movzx edx, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov byte [eax + ebx + 4], dl
mov eax, dword [esp + 0x30]
xor ebx, eax
test eax, ebx
jns 0x41ca8c
jmp 0x41c9d0
fld st(1)
fabs
fxch st(1)
fsubrp st(2)
fxch st(1)
fabs
fmul dword [0x4442e4]
fxch st(1)
fcompi st(1)
fstp st(0)
jae 0x41ca22
jmp 0x41c9d0
mov dword [esp + 0x10], 0x7fffffff
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp], eax
sar eax, 0x1f
mov dword [esp + 4], eax
call fcn.0040a390
jmp 0x41c9d5
mov ebx, edi
mov edi, edx
sub ebx, 1
mov dword [esp], edi
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
mov esi, dword [esp + 0x38]
cmp esi, 1
je 0x41cd76
cmp esi, 2
je 0x41cdc3
mov eax, dword [esp + 0x30]
test eax, eax
js 0x41cc58
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
call sym.6x
jmp 0x41c9d5
sub ebx, 1
mov dword [esp], esi
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
lea eax, [ecx - 1]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sym.bss
jmp 0x41c9d5
mov ebx, edi
sub ebx, 1
mov dword [esp], ecx
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
mov ecx, esi
mov esi, dword [esp + 0x38]
mov ebx, edi
cmp esi, 1
je 0x41ce19
cmp esi, 2
je 0x41cf22
cmp dword [esp + 0x30], 0
jns 0x41ccc2
mov dword [esp + 0x10], 0x7fffffff
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
jmp 0x41cc78
mov ebx, edi
mov dword [esp], esi
sub ebx, 1
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
cmp ebx, edi
jle 0x41cc90
movzx ebx, byte [ebp + edi]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x48]
test edi, edi
js 0x41cd97
cmp edi, eax
jl 0x41d005
sub eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sym.bss
jmp 0x41c9d5
lea eax, [ecx - 1]
mov dword [esp], esi
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
cmp ebx, edi
jle 0x41cc90
lea edx, [edi + 1]
movzx eax, byte [ebp + edi]
cmp ebx, edx
jle 0x41d102
movzx ebx, byte [ebp + edi + 1]
add edi, 2
xor edx, edi
test edi, edx
js 0x41c9d0
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
test edi, edi
js 0x41ce01
cmp edi, edx
jl 0x41d116
mov eax, dword [esp + 0x30]
sub edx, 1
mov dword [esp + 4], edx
mov dword [esp], eax
call sym.bss
jmp 0x41c9d5
mov eax, ecx
cmp edi, ecx
jle 0x41cefa
mov edi, dword [esp + 0x30]
movzx ebx, byte [ebp + ecx]
mov eax, dword [esp + 0x48]
test edi, edi
js 0x41cd97
cmp eax, edi
jle 0x41cd97
movzx eax, bl
shl eax, 0x10
mov ebx, eax
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
mov edi, dword [esp + 0x30]
shr eax, 0x12
movzx edx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov eax, dword [esp + 0x4c]
lea esi, [edi + 1]
mov byte [eax + edi + 4], dl
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea ebx, [eax + 2]
mov eax, dword [esp + 0x48]
cmp eax, ebx
jle 0x41d0da
mov eax, dword [esp + 0x28]
call sym._209
mov eax, dword [esp + 0x4c]
mov byte [eax + ebx + 4], 0x3d
mov eax, dword [esp + 0x30]
lea ebx, [eax + 3]
mov eax, dword [esp + 0x48]
cmp eax, ebx
jle 0x41d0da
mov eax, dword [esp + 0x28]
call sym._209
mov eax, dword [esp + 0x4c]
mov byte [eax + ebx + 4], 0x3d
add dword [esp + 0x30], 4
mov eax, dword [esp + 0x30]
xor ebx, eax
test eax, ebx
js 0x41c9d0
jmp 0x41cd30
sub ebx, 1
mov dword [esp], eax
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
lea eax, [ecx - 1]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
mov eax, ecx
cmp edi, ecx
jle 0x41cefa
add eax, 1
movzx edx, byte [ebp + ecx]
cmp edi, eax
jle 0x41cefa
movzx ebx, byte [ebp + ecx + 1]
lea ebp, [ecx + 2]
xor eax, ebp
test ebp, eax
js 0x41c9d0
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x48]
test edi, edi
js 0x41cd97
cmp edi, eax
jge 0x41cd97
movzx eax, dl
shl ebx, 8
shl eax, 0x10
or ebx, eax
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
mov edi, dword [esp + 0x30]
shr eax, 0x12
movzx edx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov eax, dword [esp + 0x4c]
lea esi, [edi + 1]
mov byte [eax + edi + 4], dl
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea esi, [eax + 2]
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 6
and eax, 0x3f
movzx edx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789__]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
jmp 0x41cebd
lea eax, [ecx - 1]
mov dword [esp], esi
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
mov eax, dword [esp + 0x28]
shl ebx, 0x10
call sym._209
mov eax, ebx
mov edi, dword [esp + 0x30]
shr eax, 0x12
movzx edx, byte [eax + 0x4442a0]
mov eax, dword [esp + 0x4c]
lea esi, [edi + 1]
mov byte [eax + edi + 4], dl
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [eax + 0x4442a0]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea ebx, [eax + 2]
mov eax, dword [esp + 0x48]
cmp eax, ebx
jle 0x41d0da
mov eax, dword [esp + 0x28]
call sym._209
mov eax, dword [esp + 0x4c]
mov byte [eax + ebx + 4], 0x3d
mov eax, dword [esp + 0x30]
lea ebx, [eax + 3]
mov eax, dword [esp + 0x48]
cmp eax, ebx
jle 0x41d0da
mov eax, dword [esp + 0x28]
call sym._209
mov eax, dword [esp + 0x4c]
mov byte [eax + ebx + 4], 0x3d
add dword [esp + 0x30], 4
mov eax, dword [esp + 0x30]
xor ebx, eax
test eax, ebx
js 0x41c9d0
jmp 0x41ccba
lea eax, [ecx - 1]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
lea eax, [ecx - 1]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
sub eax, 1
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
sub eax, 1
mov dword [esp], esi
mov dword [esp + 4], eax
call sym.bss
jmp 0x41c9d5
sub ebx, 1
mov dword [esp], edx
mov dword [esp + 4], ebx
call sym.bss
jmp 0x41c9d5
shl eax, 0x10
shl ebx, 8
or ebx, eax
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
mov edi, dword [esp + 0x30]
shr eax, 0x12
movzx edx, byte [eax + 0x4442a0]
mov eax, dword [esp + 0x4c]
lea esi, [edi + 1]
mov byte [eax + edi + 4], dl
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 0xc
and eax, 0x3f
movzx edx, byte [eax + 0x4442a0]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
mov eax, dword [esp + 0x30]
lea esi, [eax + 2]
mov eax, dword [esp + 0x48]
cmp eax, esi
jle 0x41d0ee
mov eax, dword [esp + 0x28]
call sym._209
mov eax, ebx
shr eax, 6
and eax, 0x3f
movzx edx, byte [eax + 0x4442a0]
mov eax, dword [esp + 0x4c]
mov byte [eax + esi + 4], dl
jmp 0x41d079