Function at 0x50da56
Capabilities:
Encode data using base64

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov ebp, dword [edx + 8]
mov esi, edx
push 3
pop edi
mov eax, ebp
xor edx, edx
div edi
cmp ebp, 0xbfffffff
ja 0x50e39d
mov edi, eax
mov eax, dword [esi]
mov ebx, edx
shl edi, 2
test edx, edx
mov dword [esp + 8], eax
je 0x50da91
add edi, 4
jb 0x50e39d
xor edx, edx
mov dword [esp + 0x1c], ecx
mov ecx, edi
mov dword [esp + 0x10], esi
inc edx
call fcn.0045c366
mov ecx, ebp
xor esi, esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov dword [esp + 4], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], ebp
sub ecx, 0x1a
cmovb ecx, esi
mov dword [esp + 0x24], ecx
mov ecx, 0
jbe 0x50ded6
xor esi, esi
xor ecx, ecx
lea edx, [ecx + 0x1a]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], edx
push 0x58037c
push dword [esp + 0x18]
push dword [esp + 0x10]
call fcn.0045c462
add esp, 0xc
mov ebp, edx
lea edx, [esi + 0x20]
mov edi, eax
mov ecx, esi
mov dword [esp + 0x2c], edx
push 0x58038c
push dword [esp + 8]
push dword [esp + 0x14]
call fcn.0045c462
add esp, 0xc
mov ebx, edx
mov esi, eax
mov edx, ebp
mov dword [esp], edi
mov ecx, edi
push 0x58039c
push 0
call fcn.00410db0
pop ecx
pop ecx
mov ecx, eax
call fcn.00417ce3
test ebx, ebx
je 0x50e19a
mov ecx, edx
shr ecx, 0x1a
cmp ebx, 1
mov cl, byte [ecx + 0x62280b]
mov byte [esi], cl
je 0x50e1a8
mov ecx, edx
shr ecx, 0x14
and ecx, 0x3f
cmp ebx, 2
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 1], cl
jbe 0x50e1b7
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3f
cmp ebx, 3
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 2], cl
je 0x50e1c6
mov ecx, edx
shr ecx, 8
and ecx, 0x3f
cmp ebx, 4
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 3], cl
jbe 0x50e1d5
mov ecx, edx
shr ecx, 2
and ecx, 0x3f
cmp ebx, 5
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 4], cl
je 0x50e1e4
shld edx, eax, 4
and edx, 0x3f
cmp ebx, 6
mov cl, byte [edx + 0x62280b]
mov byte [esi + 5], cl
jbe 0x50e1f3
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
cmp ebx, 7
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 6], cl
je 0x50e202
shr eax, 0x10
mov ecx, dword [esp]
mov edx, ebp
and eax, 0x3f
mov al, byte [eax + 0x62280b]
mov byte [esi + 7], al
push 0x58042c
push 6
call fcn.00410db0
pop ecx
pop ecx
mov ecx, eax
call fcn.00417ce3
cmp ebx, 8
jbe 0x50e211
mov ecx, edx
shr ecx, 0x1a
cmp ebx, 9
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 8], cl
je 0x50e220
mov ecx, edx
shr ecx, 0x14
and ecx, 0x3f
cmp ebx, 0xa
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 9], cl
jbe 0x50e22f
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3f
cmp ebx, 0xb
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0xa], cl
je 0x50e23e
mov ecx, edx
shr ecx, 8
and ecx, 0x3f
cmp ebx, 0xc
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0xb], cl
jbe 0x50e24d
mov ecx, edx
shr ecx, 2
and ecx, 0x3f
cmp ebx, 0xd
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0xc], cl
je 0x50e25c
shld edx, eax, 4
and edx, 0x3f
cmp ebx, 0xe
mov cl, byte [edx + 0x62280b]
mov byte [esi + 0xd], cl
jbe 0x50e26b
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
cmp ebx, 0xf
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0xe], cl
je 0x50e27a
shr eax, 0x10
mov ecx, dword [esp]
mov edx, ebp
and eax, 0x3f
mov al, byte [eax + 0x62280b]
mov byte [esi + 0xf], al
push 0x5804bc
push 0xc
call fcn.00410db0
pop ecx
pop ecx
mov ecx, eax
call fcn.00417ce3
cmp ebx, 0x10
jbe 0x50e289
mov ecx, edx
shr ecx, 0x1a
cmp ebx, 0x11
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x10], cl
je 0x50e298
mov ecx, edx
shr ecx, 0x14
and ecx, 0x3f
cmp ebx, 0x12
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x11], cl
jbe 0x50e2a7
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3f
cmp ebx, 0x13
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x12], cl
je 0x50e2b6
mov ecx, edx
shr ecx, 8
and ecx, 0x3f
cmp ebx, 0x14
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x13], cl
jbe 0x50e2c5
mov ecx, edx
shr ecx, 2
and ecx, 0x3f
cmp ebx, 0x15
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x14], cl
je 0x50e2d4
shld edx, eax, 4
and edx, 0x3f
cmp ebx, 0x16
mov cl, byte [edx + 0x62280b]
mov byte [esi + 0x15], cl
jbe 0x50e2e0
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
cmp ebx, 0x17
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x16], cl
je 0x50e2ec
shr eax, 0x10
mov ecx, dword [esp]
mov edx, ebp
and eax, 0x3f
mov al, byte [eax + 0x62280b]
mov byte [esi + 0x17], al
push 0x58054c
push 0x12
call fcn.00410db0
pop ecx
pop ecx
mov ecx, eax
call fcn.00417ce3
cmp ebx, 0x18
jbe 0x50e2f8
mov ecx, edx
shr ecx, 0x1a
cmp ebx, 0x19
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x18], cl
je 0x50e304
mov ecx, edx
shr ecx, 0x14
and ecx, 0x3f
cmp ebx, 0x1a
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x19], cl
jbe 0x50e310
mov ecx, edx
shr ecx, 0xe
and ecx, 0x3f
cmp ebx, 0x1b
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x1a], cl
je 0x50e31c
mov ecx, edx
shr ecx, 8
and ecx, 0x3f
cmp ebx, 0x1c
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x1b], cl
jbe 0x50e328
mov ecx, edx
shr ecx, 2
and ecx, 0x3f
cmp ebx, 0x1d
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x1c], cl
je 0x50e334
shld edx, eax, 4
and edx, 0x3f
cmp ebx, 0x1e
mov cl, byte [edx + 0x62280b]
mov byte [esi + 0x1d], cl
jbe 0x50e340
mov ecx, eax
shr ecx, 0x16
and ecx, 0x3f
cmp ebx, 0x1f
mov cl, byte [ecx + 0x62280b]
mov byte [esi + 0x1e], cl
je 0x50e34c
shr eax, 0x10
mov ecx, dword [esp + 0x28]
and eax, 0x3f
mov al, byte [eax + 0x62280b]
add ecx, 0xfffffffe
cmp ecx, dword [esp + 0x24]
mov byte [esi + 0x1f], al
mov esi, dword [esp + 0x2c]
jbe 0x50dadc
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
add ecx, 0x18
mov eax, ebp
mov edi, esi
sub eax, ebx
mov dword [esp], eax
cmp ecx, dword [esp]
jae 0x50dfc4
lea ebx, [ecx + 3]
mov edx, ebx
push 0x5802ec
push ebp
push dword [esp + 0x10]
call fcn.0045c462
add esp, 0xc
mov ecx, edi
add edi, 4
mov esi, edx
mov ebp, eax
mov edx, edi
push 0x5802fc
push dword [esp + 8]
push dword [esp + 0x14]
call fcn.0045c462
add esp, 0xc
test esi, esi
je 0x50e12b
test edx, edx
je 0x50e139
movzx ecx, byte [ebp]
shr ecx, 2
cmp esi, 1
mov cl, byte [ecx + 0x62280b]
mov byte [eax], cl
jbe 0x50e147
cmp edx, 1
jbe 0x50e156
mov cl, byte [ebp]
mov ch, byte [ebp + 1]
shr ch, 4
shl cl, 4
or cl, ch
movzx ecx, cl
and ecx, 0x3f
cmp esi, 2
mov cl, byte [ecx + 0x62280b]
mov byte [eax + 1], cl
jbe 0x50e163
cmp edx, 2
jbe 0x50e172
mov cl, byte [ebp + 1]
mov ch, byte [ebp + 2]
shr ch, 6
shl cl, 2
or cl, ch
movzx ecx, cl
and ecx, 0x3f
cmp edx, 3
mov cl, byte [ecx + 0x62280b]
mov byte [eax + 2], cl
je 0x50e17f
movzx ecx, byte [ebp + 2]
mov ebp, dword [esp + 0x14]
and ecx, 0x3f
mov cl, byte [ecx + 0x62280b]
mov byte [eax + 3], cl
mov ecx, ebx
mov ebx, dword [esp + 0x18]
jmp 0x50dedf
cmp ebx, 1
je 0x50e05b
mov esi, dword [esp + 0xc]
cmp ebx, 2
mov ebx, edi
jne 0x50e0ad
cmp ebx, dword [esp + 4]
jae 0x50e35e
mov eax, dword [esp + 8]
mov ecx, dword [esp]
mov edi, ebx
movzx ebx, byte [eax + ecx]
inc ecx
mov dword [esp], ecx
mov eax, ebx
shr eax, 2
cmp ecx, ebp
mov al, byte [eax + 0x62280b]
mov byte [esi + edi], al
jae 0x50e374
mov edx, dword [esp + 4]
lea ecx, [edi + 1]
cmp ecx, edx
jae 0x50e380
mov eax, dword [esp + 8]
mov ecx, dword [esp]
shl bl, 4
mov al, byte [eax + ecx]
mov ecx, eax
shr cl, 4
or bl, cl
movzx ecx, bl
and ecx, 0x3f
mov cl, byte [ecx + 0x62280b]
mov byte [esi + edi + 1], cl
lea ecx, [edi + 2]
cmp ecx, edx
jae 0x50e392
shl al, 2
mov ebx, edi
and al, 0x3c
push 3
pop edx
mov edi, dword [esp + 0x10]
jmp 0x50e09d
mov edx, dword [esp + 4]
mov ebx, edi
mov esi, dword [esp + 0xc]
cmp edi, edx
mov edi, dword [esp + 0x10]
jae 0x50e36b
mov eax, dword [esp + 8]
mov ecx, dword [esp]
movzx eax, byte [eax + ecx]
mov ecx, eax
shr ecx, 2
mov cl, byte [ecx + 0x62280b]
mov byte [esi + ebx], cl
lea ecx, [ebx + 1]
cmp ecx, edx
jae 0x50e387
shl al, 4
and al, 0x30
push 2
pop edx
movzx eax, al
add ebx, edx
mov al, byte [eax + 0x62280b]
mov byte [esi + ecx], al
jmp 0x50e0b1
mov edi, dword [esp + 0x10]
mov ecx, ebx
mov edx, esi
push 0x62189c
push dword [esp + 8]
call fcn.004fc45b
pop ecx
pop ecx
mov ecx, ebx
xor esi, esi
neg ecx
and ecx, 3
cmp ecx, esi
je 0x50e0e1
cmp edx, esi
je 0x50e18e
mov byte [eax + esi], 0x3d
inc esi
jmp 0x50e0ce
add ebx, ecx
jb 0x50e3ac
lea esi, [esp + 0x3c]
lea edx, [esp + 0x30]
mov ecx, esi
call fcn.005000db
cmp byte [esi + 0x10], 2
jne 0x50e3c0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x1c]
movsd xmm0, qword [esp + 0x3c]
mov edx, dword [edi + 4]
mov dword [ecx + 8], eax
movsd qword [ecx], xmm0
mov ecx, dword [esp + 8]
call fcn.004499b4
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
xor edx, edx
push 0x58030c
jmp 0x50e356
xor ecx, ecx
xor edx, edx
push 0x58031c
jmp 0x50e356
xor ecx, ecx
mov edx, esi
inc ecx
push 0x58032c
jmp 0x50e356
xor ecx, ecx
inc ecx
push 0x58033c
jmp 0x50e356
push 2
pop ecx
mov edx, ecx
push 0x58034c
jmp 0x50e356
push 2
pop ecx
push 0x58035c
jmp 0x50e356
push 3
pop ecx
mov edx, ecx
push 0x58036c
jmp 0x50e356
mov ecx, edx
push 0x5805fc
jmp 0x50e356
xor ecx, ecx
xor edx, edx
push 0x5803ac
jmp 0x50e356
xor ecx, ecx
inc ecx
mov edx, ecx
push 0x5803bc
jmp 0x50e356
push 2
pop ecx
mov edx, ebx
push 0x5803cc
jmp 0x50e356
push 3
pop ecx
mov edx, ecx
push 0x5803dc
jmp 0x50e356
push 4
pop ecx
mov edx, ecx
push 0x5803ec
jmp 0x50e356
push 5
pop ecx
mov edx, ecx
push 0x5803fc
jmp 0x50e356
push 6
pop ecx
mov edx, ecx
push 0x58040c
jmp 0x50e356
push 7
pop ecx
mov edx, ecx
push 0x58041c
jmp 0x50e356
push 8
pop ecx
mov edx, ecx
push 0x58043c
jmp 0x50e356
push 9
pop ecx
mov edx, ecx
push 0x58044c
jmp 0x50e356
push 0xa
pop ecx
mov edx, ecx
push 0x58045c
jmp 0x50e356
push 0xb
pop ecx
mov edx, ecx
push 0x58046c
jmp 0x50e356
push 0xc
pop ecx
mov edx, ecx
push 0x58047c
jmp 0x50e356
push 0xd
pop ecx
mov edx, ecx
push 0x58048c
jmp 0x50e356
push 0xe
pop ecx
mov edx, ecx
push 0x58049c
jmp 0x50e356
push 0xf
pop ecx
mov edx, ecx
push 0x5804ac
jmp 0x50e356
push 0x10
pop ecx
mov edx, ecx
push 0x5804cc
jmp 0x50e356
push 0x11
pop ecx
mov edx, ecx
push 0x5804dc
jmp 0x50e356
push 0x12
pop ecx
mov edx, ecx
push 0x5804ec
jmp 0x50e356
push 0x13
pop ecx
mov edx, ecx
push 0x5804fc
jmp 0x50e356
push 0x14
pop ecx
mov edx, ecx
push 0x58050c
jmp 0x50e356
push 0x15
pop ecx
mov edx, ecx
push 0x58051c
jmp 0x50e356
push 0x16
pop ecx
mov edx, ecx
push 0x58052c
jmp 0x50e356
push 0x17
pop ecx
mov edx, ecx
push 0x58053c
jmp 0x50e356
push 0x18
pop ecx
mov edx, ecx
push 0x58055c
jmp 0x50e356
push 0x19
pop ecx
mov edx, ecx
push 0x58056c
jmp 0x50e356
push 0x1a
pop ecx
mov edx, ecx
push 0x58057c
jmp 0x50e356
push 0x1b
pop ecx
mov edx, ecx
push 0x58058c
jmp 0x50e356
push 0x1c
pop ecx
mov edx, ecx
push 0x58059c
jmp 0x50e356
push 0x1d
pop ecx
mov edx, ecx
push 0x5805ac
jmp 0x50e356
push 0x1e
pop ecx
mov edx, ecx
push 0x5805bc
jmp 0x50e356
push 0x1f
pop ecx
mov edx, ecx
push 0x5805cc
call fcn.00576a40
pop eax
ud2
mov edx, dword [esp + 4]
mov ecx, ebx
push 0x58028c
jmp 0x50e356
mov ecx, ebx
push 0x5802cc
jmp 0x50e356
mov ecx, dword [esp]
mov edx, ebp
push 0x58029c
jmp 0x50e356
push 0x5802ac
jmp 0x50e356
mov edx, dword [esp + 4]
push 0x5802dc
jmp 0x50e356
mov edx, dword [esp + 4]
push 0x5802bc
jmp 0x50e356
push 0x2d
pop edx
mov ecx, 0x6218e8
push 0x621980
jmp 0x50e3b9
push 0x2a
pop edx
mov ecx, 0x6218ac
push 0x6218d8
call fcn.00576e90
jmp 0x50e35b
mov ecx, dword [esp + 0x4c]
movsd xmm0, qword [esp + 0x3c]
movsd xmm1, qword [esp + 0x44]
lea eax, [esp + 0x50]
mov dword [eax + 0x10], ecx
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
push 0xc
pop edx
mov ecx, str.Invalid_UTF8
push 0x62199c
push 0x62157c
push eax
call fcn.00576e10
add esp, 0xc
ud2