Function at 0x475c70
Capabilities:
Encode data using base64

Disassembly:
sub esp, 0xc
push ebp
push esi
push edi
mov edi, dword [esp + 0x1c]
test edi, edi
je 0x475e85
mov esi, dword [esp + 0x24]
test esi, esi
je 0x475e85
mov ebp, dword [esp + 0x28]
test ebp, ebp
je 0x475e85
mov eax, dword [esp + 0x2c]
push ebx
mov ebx, dword [esp + 0x24]
push eax
push ebx
call fcn.00475bd0
add esp, 8
cmp dword [ebp], eax
jge 0x475cbc
pop ebx
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0xc
ret
mov eax, 0x55555556
imul ebx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
lea ecx, [ebx*4]
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
xor ecx, ecx
test ebp, ebp
mov eax, 0x13
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
jl 0x475de2
mov edx, dword [esp + 0x30]
and edx, 2
mov dword [esp + 0x18], edx
cmp ecx, ebp
jne 0x475d2b
mov edx, ebp
imul edx, edx, 0x4c
lea eax, [ebx*4]
sub eax, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x10], eax
test eax, eax
jle 0x475d9a
mov edx, eax
movzx eax, byte [edi + 2]
xor ecx, ecx
mov ch, byte [edi]
add edi, 3
add esi, 4
mov cl, byte [edi - 2]
shl ecx, 8
or ecx, eax
shl ecx, 8
mov eax, ecx
shr eax, 0x1a
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_CryptDestroyHash_error]
mov byte [esi - 4], al
shl ecx, 6
mov eax, ecx
shr eax, 0x1a
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_CryptDestroyHash_error]
shl ecx, 6
mov byte [esi - 3], al
mov eax, ecx
shr eax, 0x1a
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_CryptDestroyHash_error]
shr ecx, 0x14
and ecx, 0x3f
sub edx, 1
mov byte [esi - 2], al
movzx ecx, byte [ecx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_CryptDestroyHash_error]
mov byte [esi - 1], cl
jne 0x475d31
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x18], 0
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
mov dword [esp + 0x20], edx
jne 0x475dbd
mov byte [esi], 0xd
add esi, 1
mov byte [esi], 0xa
add esi, 1
add dword [esp + 0x20], 2
add ecx, 1
cmp ecx, ebp
mov dword [esp + 0x14], ecx
jle 0x475d0e
cmp dword [esp + 0x20], 0
je 0x475de2
cmp dword [esp + 0x18], 0
jne 0x475de2
sub esi, 2
sub dword [esp + 0x20], 2
mov ecx, dword [esp + 0x24]
lea eax, [ebx + ebx*2]
sub ecx, eax
je 0x475e6e
lea ebp, [ecx + 1]
test ebp, ebp
je 0x475e6e
xor eax, eax
test ecx, ecx
jle 0x475e04
movzx eax, byte [edi]
add edi, 1
shl eax, 8
cmp ecx, 1
jle 0x475e14
movzx edx, byte [edi]
or eax, edx
add edi, 1
shl eax, 8
cmp ecx, 2
jle 0x475e21
movzx ecx, byte [edi]
or eax, ecx
shl eax, 8
test ebp, ebp
jle 0x475e48
mov ecx, ebp
lea ebx, [ebx]
mov edx, eax
shr edx, 0x1a
mov dl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_CryptDestroyHash_error]
mov byte [esi], dl
add esi, 1
shl eax, 6
sub ecx, 1
jne 0x475e30
add dword [esp + 0x20], ebp
test byte [esp + 0x30], 1
jne 0x475e6e
mov edi, 4
sub edi, ebp
test edi, edi
jle 0x475e6a
push edi
push 0x3d
push esi
call fcn.00480820
add esp, 0xc
add dword [esp + 0x20], edi
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
pop ebx
pop edi
pop esi
mov dword [eax], ecx
mov eax, 1
pop ebp
add esp, 0xc
ret
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0xc
ret