Function at 0x405350
Capabilities:
Encode data using base64
Hash data using sha1

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
mov eax, dword [0x437008]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov edx, dword [ebp + 8]
push edi
mov dword [ebp - 0xd8], ebx
mov dword [ebp - 0xd4], edx
lea edi, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x405380
sub esi, edi
lea edi, [esi + 0x25]
cmp edi, dword [edx]
jbe 0x4053a3
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004058fc
mov esp, ebp
pop ebp
ret
push esi
push ecx
push ebx
call fcn.004093c0
movups xmm0, xmmword [str.258EAFA5_E914_47DA_95CA_C5AB0DC85B11]
xor ecx, ecx
mov dword [ebp - 0xb8], 0
add esp, 0xc
mov dword [ebp - 0xb4], 0
movups xmmword [ebx + esi], xmm0
mov word [ebp - 0xb0], cx
movups xmm0, xmmword [0x43400c]
mov dword [ebp - 0xcc], 0x67452301
mov dword [ebp - 0xc8], 0xefcdab89
movups xmmword [ebx + esi + 0x10], xmm0
mov eax, dword [0x43401c]
mov dword [ebx + esi + 0x20], eax
mov al, byte [0x434020]
mov byte [ebx + esi + 0x24], al
lea esi, [edi - 1]
mov byte [ebx + edi], 0
mov edi, ebx
mov dword [ebp - 0xc4], 0x98badcfe
mov dword [ebp - 0xc0], 0x10325476
mov dword [ebp - 0xbc], 0xc3d2e1f0
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x68], ecx
test esi, esi
je 0x4054a8
test ebx, ebx
je 0x4054a8
mov dword [ebp - 0xd0], 1
dec esi
cmp dword [ebp - 0x68], 0
jne 0x4054a8
mov al, byte [edi]
movsx ecx, cx
mov byte [ebp + ecx - 0xae], al
mov eax, dword [ebp - 0xb0]
inc eax
add dword [ebp - 0xb8], 8
mov cx, ax
movzx edx, ax
mov word [ebp - 0xb0], cx
jne 0x40548b
add dword [ebp - 0xb4], 1
mov eax, dword [ebp - 0x68]
cmove eax, dword [ebp - 0xd0]
mov dword [ebp - 0x68], eax
cmp dx, 0x40
jne 0x4054a3
lea ecx, [ebp - 0xcc]
call fcn.00404e30
mov cx, word [ebp - 0xb0]
inc edi
test esi, esi
jne 0x405447
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0xcc]
call fcn.00404ce0
movups xmm0, xmmword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov eax, dword [ebp - 0xd4]
movups xmmword [ebp - 0x4c], xmm0
movups xmm0, xmmword [0x433580]
mov eax, dword [eax]
movups xmmword [ebp - 0x3c], xmm0
movups xmm0, xmmword [0x433590]
movups xmmword [ebp - 0x2c], xmm0
movups xmm0, xmmword [0x4335a0]
movups xmmword [ebp - 0x1c], xmm0
cmp eax, 0x1f
jb 0x4055ea
mov eax, dword [ebp - 0xd8]
lea ebx, [ebp - 0x60]
xor edi, edi
mov dword [ebp - 0xd0], 0x14
nop dword [eax + eax]
movzx edx, byte [ebx]
add edi, 4
movzx esi, byte [ebx + 1]
mov ecx, edx
shr ecx, 2
and edx, 3
shl edx, 4
movzx ecx, byte [ebp + ecx - 0x4c]
mov byte [eax], cl
mov ecx, esi
shr ecx, 4
and esi, 0xf
or ecx, edx
shl esi, 2
movzx edx, byte [ebx + 2]
add ebx, 3
movzx ecx, byte [ebp + ecx - 0x4c]
mov byte [eax + 1], cl
mov ecx, edx
shr ecx, 6
and edx, 0x3f
or ecx, esi
movzx ecx, byte [ebp + ecx - 0x4c]
mov byte [eax + 2], cl
movzx ecx, byte [ebp + edx - 0x4c]
mov byte [eax + 3], cl
add eax, 4
mov ecx, dword [ebp - 0xd0]
sub ecx, 3
mov dword [ebp - 0xd0], ecx
cmp edi, 0x48
jl 0x40557f
mov byte [eax], 0xa
inc eax
xor edi, edi
cmp ecx, 3
jge 0x405510
lea edx, [ebp - 0x4c]
sub edx, ebx
je 0x4055cf
movzx esi, byte [ebx]
mov ecx, esi
and esi, 3
shr ecx, 2
shl esi, 4
movzx ecx, byte [ebp + ecx - 0x4c]
mov byte [eax], cl
cmp edx, 1
jne 0x4055a9
mov bl, 0x3d
jmp 0x4055bb
movzx edx, byte [ebx + 1]
mov ecx, edx
shr edx, 4
and ecx, 0xf
or esi, edx
mov bl, byte [ebp + ecx*4 - 0x4c]
mov cl, byte [ebp + esi - 0x4c]
mov byte [eax + 1], cl
mov byte [eax + 2], bl
mov byte [eax + 3], 0x3d
add eax, 4
add edi, 4
test edi, edi
je 0x4055d7
mov byte [eax], 0xa
inc eax
mov ecx, dword [ebp - 0xd4]
mov ebx, dword [ebp - 0xd8]
mov byte [eax], 0
sub eax, ebx
mov dword [ecx], eax
mov ecx, dword [ebp - 8]
mov byte [eax + ebx - 1], 0
xor ecx, ebp
mov eax, dword [ebp - 0xd4]
pop edi
pop esi
pop ebx
mov eax, dword [eax]
call fcn.004058fc
mov esp, ebp
pop ebp
ret