Function at 0x52d050
Capabilities:
Encode data using base64

Disassembly:
push ecx
mov eax, dword [esp + 8]
mov edx, dword [eax]
push ebx
movzx ebx, byte [edx + 1]
push ebp
mov ebp, dword [esp + 0x20]
add edx, 1
shr ebp, 0xb
and ebp, 1
add edx, 1
test ebp, ebp
mov dword [esp + 8], 0
je 0x52d160
cmp ebx, 0xc0
jb 0x52d160
movzx eax, byte [edx]
and eax, 0x3f
test bl, 0x20
jne 0x52d0a4
and ebx, 0x1f
shl ebx, 6
or ebx, eax
add edx, 1
jmp 0x52d160
test bl, 0x10
jne 0x52d0c5
and ebx, 0xf
shl ebx, 6
or ebx, eax
movzx eax, byte [edx + 1]
shl ebx, 6
and eax, 0x3f
or ebx, eax
add edx, 2
jmp 0x52d160
test bl, 8
jne 0x52d0ef
and ebx, 7
shl ebx, 6
or ebx, eax
movzx eax, byte [edx + 1]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 2]
shl ebx, 6
and eax, 0x3f
or ebx, eax
add edx, 3
jmp 0x52d160
test bl, 4
jne 0x52d125
and ebx, 3
shl ebx, 6
or ebx, eax
movzx eax, byte [edx + 1]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 2]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 3]
shl ebx, 6
and eax, 0x3f
or ebx, eax
add edx, 4
jmp 0x52d160
and ebx, 1
shl ebx, 6
or ebx, eax
movzx eax, byte [edx + 1]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 2]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 3]
shl ebx, 6
and eax, 0x3f
or ebx, eax
movzx eax, byte [edx + 4]
shl ebx, 6
and eax, 0x3f
or ebx, eax
add edx, 5
sub edx, 1
test ebx, ebx
jne 0x52d173
mov ecx, dword [esp + 0x18]
mov dword [ecx], 1
jmp 0x52d1bd
lea eax, [ebx - 0x30]
cmp eax, 0x4a
ja 0x52d1bd
push esi
lea esi, [ebx - 0x30]
push edi
movsx edi, word [esi*2 + 0x56f308]
test edi, edi
je 0x52d1e8
jle 0x52d192
mov ebx, edi
jmp 0x52d1bb
neg edi
mov esi, edi
mov dword [esp + 0x10], edi
cmp esi, 0xc
jne 0x52d1bb
cmp byte [edx + 1], 0x7b
jne 0x52d1bb
lea eax, [edx + 2]
call fcn.0052cfd0
test eax, eax
jne 0x52d1bb
mov eax, dword [esp + 0x20]
mov dword [eax], 0x25
pop edi
pop esi
test dword [esp + 0x20], 0x20000000
mov eax, dword [esp + 8]
je 0x52d1d6
lea ecx, [eax - 6]
cmp ecx, 5
ja 0x52d1d6
add eax, 0x17
mov ecx, dword [esp + 0x10]
mov dword [ecx], edx
mov edx, dword [esp + 0x14]
pop ebp
mov dword [edx], ebx
pop ebx
pop ecx
ret 0x14
cmp eax, 0x48
ja case.0x52d1f8.10
movzx eax, byte [eax + 0x52d784]
jmp dword [eax*4 + 0x52d75c]
test dword [esp + 0x28], 0x2000000
je 0x52d1b1
movzx eax, byte [edx + 1]
test byte [eax + 0x5702f0], 8
je 0x52d1bb
movzx edi, byte [edx + 2]
test byte [edi + 0x5702f0], 8
je 0x52d1bb
movzx esi, byte [edx + 3]
test byte [esi + 0x5702f0], 8
je 0x52d1bb
movzx ecx, byte [edx + 4]
test byte [ecx + 0x5702f0], 8
je 0x52d1bb
cmp eax, 0x61
jb 0x52d249
sub eax, 0x20
cmp eax, 0x41
sbb ebx, ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub eax, ebx
cmp edi, 0x61
jb 0x52d25e
sub edi, 0x20
cmp edi, 0x41
sbb ebx, ebx
and ebx, 0xfffffff9
shl eax, 4
add ebx, 0x37
sub eax, ebx
add eax, edi
cmp esi, 0x61
jb 0x52d278
sub esi, 0x20
cmp esi, 0x41
sbb edi, edi
and edi, 0xfffffff9
shl eax, 4
add edi, 0x37
sub eax, edi
add eax, esi
mov esi, ecx
cmp esi, 0x61
jb 0x52d294
sub esi, 0x20
cmp esi, 0x41
sbb ecx, ecx
shl eax, 4
mov ebx, eax
and ecx, 0xfffffff9
add ecx, 0x37
sub ebx, ecx
add ebx, esi
add edx, 4
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x10ff00
add eax, 0xff
cmp ebx, eax
jbe 0x52d65e
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x4c
jmp 0x52d1bb
test dword [esp + 0x28], 0x2000000
jne 0x52d1bb
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x25
jmp 0x52d1bb
test ecx, ecx
jne 0x52d1bb
mov al, byte [edx + 1]
cmp al, 0x3c
je 0x52d410
cmp al, 0x27
je 0x52d410
cmp al, 0x7b
jne 0x52d352
mov al, byte [edx + 2]
test al, al
lea esi, [edx + 2]
je 0x52d332
cmp al, 0x7d
je 0x52d33b
cmp al, 0x2d
je 0x52d328
cmp al, 0x30
jb 0x52d33b
cmp al, 0x39
ja 0x52d33b
mov al, byte [esi + 1]
add esi, 1
test al, al
jne 0x52d318
mov ebp, 1
add edx, ebp
jmp 0x52d354
mov al, byte [esi]
test al, al
je 0x52d332
cmp al, 0x7d
je 0x52d332
mov dword [esp + 0x10], 0x1c
jmp 0x52d1bb
xor ebp, ebp
cmp byte [edx + 1], 0x2d
jne 0x52d363
mov edi, 1
add edx, edi
jmp 0x52d365
xor edi, edi
mov al, byte [edx + 1]
xor esi, esi
cmp al, 0x30
jb 0x52d391
mov edi, edi
cmp al, 0x39
ja 0x52d391
cmp esi, 0xccccccb
jg 0x52d3ac
movzx ecx, byte [edx + 1]
add edx, 1
lea eax, [esi + esi*4]
lea esi, [ecx + eax*2 - 0x30]
mov al, byte [edx + 1]
cmp al, 0x30
jae 0x52d370
test ebp, ebp
je 0x52d3d0
add edx, 1
cmp byte [edx], 0x7d
je 0x52d3d0
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x39
jmp 0x52d1bb
mov al, byte [edx + 1]
cmp al, 0x30
jb 0x52d3c1
cmp al, 0x39
ja 0x52d3c1
mov al, byte [edx + 2]
add edx, 1
cmp al, 0x30
jae 0x52d3b3
mov eax, dword [esp + 0x20]
mov dword [eax], 0x3d
jmp 0x52d1bb
test esi, esi
jne 0x52d3e3
mov eax, dword [esp + 0x20]
mov dword [eax], 0x3a
jmp 0x52d1bb
test edi, edi
je 0x52d405
mov eax, dword [esp + 0x24]
cmp esi, eax
jle 0x52d3fe
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0xf
jmp 0x52d1bb
sub eax, esi
add eax, 1
mov esi, eax
neg esi
mov dword [esp + 0x10], esi
jmp 0x52d19a
mov dword [esp + 0x10], 0x1b
jmp 0x52d1bb
test ecx, ecx
jne 0x52d45d
mov al, byte [edx + 1]
cmp al, 0x30
mov ecx, edx
jb 0x52d450
lea ebx, [ebx]
cmp al, 0x39
ja 0x52d450
cmp esi, 0xccccccb
jg 0x52d4b1
add edx, 1
lea eax, [esi + esi*4]
movzx esi, byte [edx]
lea esi, [esi + eax*2 - 0x30]
mov al, byte [edx + 1]
cmp al, 0x30
jae 0x52d430
cmp esi, 8
jl 0x52d405
cmp esi, dword [esp + 0x24]
jle 0x52d405
mov edx, ecx
movzx ebx, byte [edx]
cmp ebx, 0x38
jae 0x52d1bb
sub ebx, 0x30
lea esp, [esp]
mov al, byte [edx + 1]
add edi, 1
cmp al, 0x30
jb 0x52d48e
cmp al, 0x37
ja 0x52d48e
movzx eax, byte [edx + 1]
add edx, 1
cmp edi, 2
lea ebx, [eax + ebx*8 - 0x30]
jl 0x52d470
test ebp, ebp
jne 0x52d1bb
cmp ebx, 0xff
jbe 0x52d1bb
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x33
jmp 0x52d1bb
mov al, byte [edx + 1]
cmp al, 0x30
jb 0x52d4c6
cmp al, 0x39
ja 0x52d4c6
mov al, byte [edx + 2]
add edx, 1
cmp al, 0x30
jae 0x52d4b8
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x3d
jmp 0x52d1bb
cmp byte [edx + 1], 0x7b
je 0x52d4ea
mov eax, dword [esp + 0x20]
mov dword [eax], 0x51
jmp 0x52d1bb
cmp byte [edx + 2], 0x7d
jne 0x52d4ff
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x56
jmp 0x52d1bb
mov al, byte [edx + 2]
add edx, 2
xor ebx, ebx
cmp al, 0x30
jb 0x52d541
jmp 0x52d510
cmp al, 0x37
ja 0x52d541
add edx, 1
test ebx, ebx
movzx eax, al
jne 0x52d523
cmp eax, 0x30
je 0x52d53b
lea ebx, [eax + ebx*8 - 0x30]
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x10ff00
add eax, 0xff
cmp ebx, eax
ja 0x52d559
mov al, byte [edx]
cmp al, 0x30
jae 0x52d510
cmp byte [edx], 0x7d
je 0x52d65e
mov eax, dword [esp + 0x20]
mov dword [eax], 0x50
jmp 0x52d1bb
mov al, byte [edx]
cmp al, 0x30
jb 0x52d56e
nop
cmp al, 0x37
ja 0x52d56e
mov al, byte [edx + 1]
add edx, 1
cmp al, 0x30
jae 0x52d560
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x22
jmp 0x52d1bb
test dword [esp + 0x28], 0x2000000
je 0x52d5e2
movzx eax, byte [edx + 1]
test byte [eax + 0x5702f0], 8
je 0x52d1bb
movzx esi, byte [edx + 2]
test byte [esi + 0x5702f0], 8
je 0x52d1bb
cmp eax, 0x61
jb 0x52d5b1
sub eax, 0x20
cmp eax, 0x41
sbb ecx, ecx
and ecx, 0xfffffff9
add ecx, 0x37
sub eax, ecx
cmp esi, 0x61
jb 0x52d5c6
sub esi, 0x20
cmp esi, 0x41
sbb ecx, ecx
and ecx, 0xfffffff9
shl eax, 4
add ecx, 0x37
mov ebx, eax
sub ebx, ecx
add ebx, esi
add edx, 2
jmp 0x52d1bb
cmp byte [edx + 1], 0x7b
jne 0x52d6c0
mov al, byte [edx + 2]
add edx, 2
cmp al, 0x7d
jne 0x52d605
mov eax, dword [esp + 0x20]
mov dword [eax], 0x56
jmp 0x52d1bb
movzx eax, al
xor ebx, ebx
test byte [eax + 0x5702f0], 8
je 0x52d659
add edx, 1
test ebx, ebx
jne 0x52d61f
cmp eax, 0x30
je 0x52d64d
cmp eax, 0x61
jb 0x52d627
sub eax, 0x20
cmp eax, 0x41
sbb ecx, ecx
and ecx, 0xfffffff9
shl ebx, 4
add ecx, 0x37
sub ebx, ecx
add ebx, eax
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x10ff00
add eax, 0xff
cmp ebx, eax
ja 0x52d686
movzx eax, byte [edx]
test byte [eax + 0x5702f0], 8
jne 0x52d613
cmp byte [edx], 0x7d
jne 0x52d6b1
test ebp, ebp
je 0x52d1bb
lea eax, [ebx - 0xd800]
cmp eax, 0x7ff
ja 0x52d1bb
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x49
jmp 0x52d1bb
movzx ecx, byte [edx]
test byte [ecx + 0x5702f0], 8
je 0x52d6a2
movzx eax, byte [edx + 1]
add edx, 1
test byte [eax + 0x5702f0], 8
jne 0x52d692
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x22
jmp 0x52d1bb
mov eax, dword [esp + 0x20]
mov dword [eax], 0x4f
jmp 0x52d1bb
xor ebx, ebx
movzx ecx, byte [edx + 1]
add edi, 1
test byte [ecx + 0x5702f0], 8
je 0x52d1bb
movzx eax, byte [edx + 1]
add edx, 1
cmp eax, 0x61
jb 0x52d6e5
sub eax, 0x20
cmp eax, 0x41
sbb ecx, ecx
and ecx, 0xfffffff9
shl ebx, 4
add ecx, 0x37
sub ebx, ecx
add ebx, eax
cmp edi, 2
jl 0x52d6c2
jmp 0x52d1bb
movzx ebx, byte [edx + 1]
add edx, 1
test ebx, ebx
jne 0x52d71b
mov eax, dword [esp + 0x20]
mov dword [eax], 2
jmp 0x52d1bb
cmp ebx, 0x7f
jbe 0x52d72f
mov ecx, dword [esp + 0x20]
mov dword [ecx], 0x44
jmp 0x52d1bb
lea eax, [ebx - 0x61]
cmp eax, 0x19
ja 0x52d73a
sub ebx, 0x20
xor ebx, 0x40
jmp 0x52d1bb
test byte [esp + 0x28], 0x40
je 0x52d1bb
mov ecx, dword [esp + 0x20]
mov dword [ecx], 3
jmp 0x52d1bb