Function at 0x506760
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0x18]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
shr eax, 0xb
and eax, 1
mov dword [ebp - 8], eax
mov ecx, dword [edi]
movzx edx, byte [ecx + 1]
add ecx, 2
test eax, eax
je 0x50686c
cmp edx, 0xc0
jb 0x50686c
movzx eax, byte [ecx]
and eax, 0x3f
test dl, 0x20
jne 0x5067b0
and edx, 0x1f
shl edx, 6
or edx, eax
inc ecx
jmp 0x50686c
test dl, 0x10
jne 0x5067d1
and edx, 0xf
shl edx, 6
or edx, eax
movzx eax, byte [ecx + 1]
shl edx, 6
and eax, 0x3f
or edx, eax
add ecx, 2
jmp 0x50686c
test dl, 8
jne 0x5067fb
and edx, 7
shl edx, 6
or edx, eax
movzx eax, byte [ecx + 1]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 2]
shl edx, 6
and eax, 0x3f
or edx, eax
add ecx, 3
jmp 0x50686c
test dl, 4
jne 0x506831
and edx, 3
shl edx, 6
or edx, eax
movzx eax, byte [ecx + 1]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 2]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 3]
shl edx, 6
and eax, 0x3f
or edx, eax
add ecx, 4
jmp 0x50686c
and edx, 1
shl edx, 6
or edx, eax
movzx eax, byte [ecx + 1]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 2]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 3]
shl edx, 6
and eax, 0x3f
or edx, eax
movzx eax, byte [ecx + 4]
shl edx, 6
and eax, 0x3f
or edx, eax
add ecx, 5
lea eax, [ecx - 1]
mov dword [ebp - 0x14], eax
mov esi, eax
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], esi
test edx, edx
jne 0x50688c
mov eax, dword [ebp + 0x10]
mov dword [eax], 1
jmp 0x506ace
lea eax, [edx - 0x30]
cmp eax, 0x4a
ja 0x506ace
lea ebx, [edx - 0x30]
movsx edi, word [ebx*2 + 0x5b9d00]
test edi, edi
je 0x5068ba
cmovg edx, edi
mov eax, edi
neg eax
xor ebx, ebx
test edi, edi
cmovle ebx, eax
jmp 0x506b70
cmp eax, 0x48
ja case.0x5068ca.10
movzx eax, byte [eax + 0x506ee0]
jmp dword [eax*4 + 0x506eb8]
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x25
jmp 0x506ac9
test dword [ebp + 0x18], 0x2000000
je case.0x5068ca.28
movzx ecx, byte [esi + 1]
test byte [ecx + 0x5b9e50], 8
je 0x506ac9
movzx edi, byte [esi + 2]
test byte [edi + 0x5b9e50], 8
je 0x506ac9
movzx ebx, byte [esi + 3]
test byte [ebx + 0x5b9e50], 8
je 0x506ac9
lea eax, [esi + 4]
mov dword [ebp - 0x10], eax
movzx eax, byte [eax]
mov dword [ebp - 0xc], eax
test byte [eax + 0x5b9e50], 8
je 0x506ac9
mov edx, dword [ebp - 0xc]
lea eax, [ecx - 0x20]
cmp ecx, 0x61
lea esi, [ebx - 0x20]
cmovb eax, ecx
cmp edi, 0x61
lea ecx, [edi - 0x20]
cmovb ecx, edi
cmp ebx, 0x61
lea edi, [edx - 0x20]
cmovb esi, ebx
cmp edx, 0x61
cmovb edi, edx
cmp eax, 0x41
sbb edx, edx
add eax, 0xffffffc9
and edx, 7
add edx, eax
shl edx, 4
cmp ecx, 0x41
sbb eax, eax
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
add edx, ecx
mov ecx, 0x10ffff
shl edx, 4
cmp esi, 0x41
sbb eax, eax
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
add edx, esi
mov esi, dword [ebp - 0x10]
shl edx, 4
cmp edi, 0x41
sbb eax, eax
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
mov eax, 0xff
add edx, edi
mov edi, dword [ebp - 8]
test edi, edi
cmovne eax, ecx
cmp edx, eax
jbe 0x506ca0
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x4c
jmp 0x506ac9
mov edi, dword [ebp + 8]
xor ebx, ebx
test dword [ebp + 0x18], 0x2000000
jne 0x506ace
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x25
jmp 0x506ace
cmp dword [ebp + 0x1c], 0
jne 0x506ac9
mov al, byte [esi + 1]
cmp al, 0x3c
je 0x506b21
cmp al, 0x27
je 0x506b21
cmp al, 0x7b
jne 0x506a49
mov al, byte [esi + 2]
lea edi, [esi + 2]
test al, al
je 0x506a2c
cmp al, 0x7d
je 0x506a35
cmp al, 0x2d
je 0x506a24
cmp al, 0x30
jb 0x506a35
cmp al, 0x39
ja 0x506a35
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x506a14
mov ebx, 1
mov esi, ecx
jmp 0x506a4b
mov al, byte [edi]
test al, al
je 0x506a2c
cmp al, 0x7d
je 0x506a2c
mov ebx, 0x1c
jmp 0x506acb
xor ebx, ebx
mov ch, byte [esi + 1]
lea eax, [esi + 1]
cmp ch, 0x2d
mov byte [ebp - 1], ch
cmove esi, eax
xor eax, eax
mov cl, byte [esi + 1]
lea edi, [esi + 1]
cmp cl, 0x30
jb 0x506a8e
cmp cl, 0x39
ja 0x506a8b
cmp eax, 0xccccccb
jg 0x506aa3
mov esi, edi
lea ecx, [eax + eax*4]
lea edi, [esi + 1]
movzx eax, byte [esi]
lea eax, [eax + ecx*2]
mov cl, byte [edi]
add eax, 0xffffffd0
cmp cl, 0x30
jae 0x506a67
mov ch, byte [ebp - 1]
test ebx, ebx
je 0x506af2
inc esi
cmp byte [esi], 0x7d
je 0x506af2
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x39
jmp 0x506ac9
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jb 0x506ac0
nop dword [eax]
cmp al, 0x39
ja 0x506ac0
mov esi, ecx
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jae 0x506ab0
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x3d
xor ebx, ebx
mov edi, dword [ebp + 8]
test dword [ebp + 0x18], 0x20000000
je 0x506ae2
lea ecx, [ebx - 6]
cmp ecx, 5
ja 0x506ae2
add ebx, 0x17
mov ecx, dword [ebp + 0xc]
mov eax, ebx
mov dword [edi], esi
pop edi
pop esi
mov dword [ecx], edx
pop ebx
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x506b01
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x3a
jmp 0x506ac9
cmp ch, 0x2d
jne 0x506b1d
mov ecx, dword [ebp + 0x14]
cmp eax, ecx
jle 0x506b18
mov eax, dword [ebp + 0x10]
mov dword [eax], 0xf
jmp 0x506ac9
sub ecx, eax
lea eax, [ecx + 1]
mov ebx, eax
jmp 0x506b6e
mov ebx, 0x1b
jmp 0x506acb
cmp dword [ebp + 0x1c], 0
jne 0x506bcf
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jb 0x506b64
nop dword [eax]
cmp al, 0x39
ja 0x506b64
cmp ebx, 0xccccccb
jg 0x506ba8
mov esi, ecx
lea ecx, [ebx - 6]
lea ecx, [ebx + ecx*4]
movzx eax, byte [esi]
lea ebx, [eax + ecx*2]
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jae 0x506b40
cmp ebx, 8
jl 0x506b6e
cmp ebx, dword [ebp + 0x14]
jg 0x506bcf
neg ebx
cmp ebx, 0xc
jne 0x506acb
cmp byte [esi + 1], 0x7b
jne 0x506acb
lea eax, [esi + 2]
push eax
call fcn.0050da40
mov edi, dword [ebp + 8]
add esp, 4
test eax, eax
jne 0x506ace
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x25
jmp 0x506ace
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jb 0x506ac0
cmp al, 0x39
ja 0x506ac0
mov esi, ecx
mov al, byte [esi + 1]
lea ecx, [esi + 1]
cmp al, 0x30
jae 0x506bb6
jmp 0x506ac0
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0xc]
movzx edx, byte [eax]
cmp edx, 0x38
jae 0x506ac9
mov esi, dword [ebp - 0x14]
sub edx, 0x30
mov al, byte [esi + 1]
inc edi
cmp al, 0x30
jb 0x506c03
cmp al, 0x37
ja 0x506c03
movzx eax, byte [esi + 1]
inc esi
add edx, 0xfffffffa
lea edx, [eax + edx*8]
cmp edi, 2
jl 0x506be7
mov edi, dword [ebp - 8]
test edi, edi
jne 0x506ac9
mov edi, dword [ebp + 8]
xor ebx, ebx
cmp edx, 0xff
jbe 0x506ace
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x33
jmp 0x506ace
cmp byte [esi + 1], 0x7b
je 0x506c41
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x51
jmp 0x506ac9
cmp byte [esi + 2], 0x7d
lea eax, [esi + 2]
jne 0x506c58
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x56
jmp 0x506ac9
mov edi, dword [ebp - 8]
mov esi, eax
xor edx, edx
mov al, byte [esi]
cmp al, 0x30
jb 0x506c9b
mov ebx, 0x10ffff
nop word [eax + eax]
cmp al, 0x37
ja 0x506c9b
inc esi
movzx eax, al
test edx, edx
jne 0x506c81
cmp eax, 0x30
je 0x506c95
add eax, 0xffffffd0
test edi, edi
lea edx, [eax + edx*8]
mov eax, 0xff
cmovne eax, ebx
cmp edx, eax
ja 0x506ccc
mov al, byte [esi]
cmp al, 0x30
jae 0x506c70
cmp byte [esi], 0x7d
jne 0x506cec
test edi, edi
je 0x506ac9
mov edi, dword [ebp + 8]
lea eax, [edx - 0xd800]
xor ebx, ebx
cmp eax, 0x7ff
ja 0x506ace
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x49
jmp 0x506ace
mov al, byte [esi]
cmp al, 0x30
jb 0x506cde
cmp al, 0x37
ja 0x506cde
mov al, byte [esi + 1]
inc esi
cmp al, 0x30
jae 0x506cd2
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x22
jmp 0x506ac9
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x50
jmp 0x506ac9
test dword [ebp + 0x18], 0x2000000
je 0x506d5e
movzx ecx, byte [esi + 1]
test byte [ecx + 0x5b9e50], 8
je 0x506ac9
movzx edi, byte [esi + 2]
test byte [edi + 0x5b9e50], 8
je 0x506ac9
cmp ecx, 0x61
lea eax, [ecx - 0x20]
cmovb eax, ecx
cmp edi, 0x61
lea ecx, [edi - 0x20]
cmovb ecx, edi
cmp eax, 0x41
sbb edx, edx
add eax, 0xffffffc9
and edx, 7
add edx, eax
shl edx, 4
cmp ecx, 0x41
sbb eax, eax
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
add edx, ecx
add esi, 2
jmp 0x506ac9
cmp byte [esi + 1], 0x7b
jne 0x506e1c
mov al, byte [esi + 2]
add esi, 2
cmp al, 0x7d
jne 0x506d80
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x56
jmp 0x506ac9
mov edi, dword [ebp - 8]
xor edx, edx
movzx eax, al
test byte [eax + 0x5b9e50], 8
je 0x506dd5
mov ebx, 0x10ffff
inc esi
test edx, edx
jne 0x506da0
cmp eax, 0x30
je 0x506dc9
cmp eax, 0x61
lea ecx, [eax - 0x20]
cmovb ecx, eax
cmp ecx, 0x41
sbb eax, eax
shl edx, 4
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
mov eax, 0xff
add edx, ecx
test edi, edi
cmovne eax, ebx
cmp edx, eax
ja 0x506dec
movzx eax, byte [esi]
test byte [eax + 0x5b9e50], 8
jne 0x506d96
cmp byte [esi], 0x7d
je 0x506ca0
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x4f
jmp 0x506ac9
movzx eax, byte [esi]
test byte [eax + 0x5b9e50], 8
je 0x506cde
nop dword [eax]
movzx eax, byte [esi + 1]
inc esi
test byte [eax + 0x5b9e50], 8
jne 0x506e00
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x22
jmp 0x506ac9
xor edx, edx
nop
movzx eax, byte [esi + 1]
inc edi
test byte [eax + 0x5b9e50], 8
je 0x506ac9
movzx eax, byte [esi + 1]
inc esi
cmp eax, 0x61
lea ecx, [eax - 0x20]
cmovb ecx, eax
cmp ecx, 0x41
sbb eax, eax
shl edx, 4
and eax, 0xfffffff9
add eax, 0x37
sub edx, eax
add edx, ecx
cmp edi, 2
jl 0x506e20
jmp 0x506ac9
movzx edx, byte [esi + 1]
inc esi
test edx, edx
jne 0x506e73
mov eax, dword [ebp + 0x10]
mov dword [eax], 2
jmp 0x506ac9
cmp edx, 0x7f
jbe 0x506e86
mov eax, dword [ebp + 0x10]
mov dword [eax], 0x44
jmp 0x506ac9
lea eax, [edx - 0x61]
cmp eax, 0x19
ja 0x506e91
sub edx, 0x20
xor edx, 0x40
jmp 0x506ac9
mov edi, dword [ebp + 8]
xor ebx, ebx
test byte [ebp + 0x18], 0x40
je 0x506ace
mov eax, dword [ebp + 0x10]
mov dword [eax], 3
jmp 0x506ace