Function at 0x40d600
Capabilities:
Encode data using base64

Disassembly:
push ebx
push ebp
mov ebp, dword [esp + 0x18]
push esi
mov esi, eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
movzx ebx, byte [edx + 1]
shr ebp, 0xb
add edx, 2
and ebp, 1
je 0x40d6f4
cmp ebx, 0xc0
jl 0x40d6f4
test bl, 0x20
jne 0x40d647
movzx ecx, byte [edx]
and ebx, 0x1f
and ecx, 0x3f
shl ebx, 6
or ebx, ecx
inc edx
jmp 0x40d6f4
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
and eax, 0x3f
and ecx, 0x3f
test bl, 0x10
jne 0x40d66e
and ebx, 0xf
shl ebx, 6
or ebx, eax
shl ebx, 6
or ebx, ecx
add edx, 2
jmp 0x40d6f4
test bl, 8
jne 0x40d691
and ebx, 7
shl ebx, 6
or ebx, eax
shl ebx, 6
or ebx, ecx
movzx ecx, byte [edx + 2]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
add edx, 3
jmp 0x40d6f4
test bl, 4
jne 0x40d6c0
and ebx, 3
shl ebx, 6
or ebx, eax
shl ebx, 6
or ebx, ecx
movzx ecx, byte [edx + 2]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
movzx ecx, byte [edx + 3]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
add edx, 4
jmp 0x40d6f4
and ebx, 1
shl ebx, 6
or ebx, eax
shl ebx, 6
or ebx, ecx
movzx ecx, byte [edx + 2]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
movzx ecx, byte [edx + 3]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
movzx ecx, byte [edx + 4]
shl ebx, 6
and ecx, 0x3f
or ebx, ecx
add edx, 5
dec edx
test ebx, ebx
jne 0x40d708
mov eax, dword [esp + 0x14]
mov dword [eax], 1
jmp 0x40dc11
lea eax, [ebx - 0x30]
push edi
cmp eax, 0x4a
ja 0x40dbef
movsx ecx, word [eax*2 + 0x4ac048]
test ecx, ecx
je 0x40d728
mov ebx, ecx
jmp 0x40dbef
cmp eax, 0x48
ja case.0x40d738.10
movzx edi, byte [eax + 0x40dc60]
jmp dword [edi*4 + 0x40dc3c]
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x25
jmp 0x40dbef
test dword [esp + 0x20], 0x2000000
je case.0x40d738.28
movzx eax, byte [edx + 1]
test byte [eax + 0x4ace20], 8
je 0x40dbef
movzx esi, byte [edx + 2]
test byte [esi + 0x4ace20], 8
je 0x40dbef
movzx ebp, byte [edx + 3]
test byte [ebp + 0x4ace20], 8
je 0x40dbef
movzx ecx, byte [edx + 4]
test byte [ecx + 0x4ace20], 8
je 0x40dbef
cmp eax, 0x61
jl 0x40d7a4
sub eax, 0x20
xor ebx, ebx
cmp eax, 0x41
setge bl
dec ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub eax, ebx
mov edi, eax
cmp esi, 0x61
jl 0x40d7bf
sub esi, 0x20
xor ebx, ebx
cmp esi, 0x41
setge bl
shl edi, 4
mov eax, edi
mov edi, ebp
dec ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub eax, ebx
add eax, esi
cmp edi, 0x61
jl 0x40d7e1
sub edi, 0x20
xor ebx, ebx
cmp edi, 0x41
setge bl
shl eax, 4
mov esi, eax
dec ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub esi, ebx
add esi, edi
mov edi, ecx
cmp edi, 0x61
jl 0x40d803
sub edi, 0x20
xor eax, eax
cmp edi, 0x41
setge al
shl esi, 4
mov ebx, esi
dec eax
and eax, 0xfffffff9
add eax, 0x37
sub ebx, eax
add ebx, edi
add edx, 4
jmp 0x40dbef
test dword [esp + 0x20], 0x2000000
jne 0x40dbef
mov eax, dword [esp + 0x18]
mov dword [eax], 0x25
jmp 0x40dbef
test esi, esi
jne 0x40dbef
mov al, byte [edx + 1]
cmp al, 0x3c
je 0x40d96a
cmp al, 0x27
je 0x40d96a
cmp al, 0x7b
jne 0x40d8a4
mov al, byte [edx + 2]
lea esi, [edx + 2]
test al, al
je 0x40d888
lea esp, [esp]
cmp al, 0x7d
je 0x40d890
cmp al, 0x2d
je 0x40d880
cmp al, 0x30
jb 0x40d890
cmp al, 0x39
ja 0x40d890
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x40d870
mov edi, 1
inc edx
jmp 0x40d8a6
mov al, byte [esi]
test al, al
je 0x40d888
cmp al, 0x7d
je 0x40d888
mov ebx, 0xffffffe4
jmp 0x40dc10
xor edi, edi
cmp byte [edx + 1], 0x2d
jne 0x40d8b4
mov esi, 1
inc edx
jmp 0x40d8b6
xor esi, esi
mov al, byte [edx + 1]
xor ebx, ebx
cmp al, 0x30
jb 0x40d910
nop
cmp al, 0x39
ja 0x40d8df
cmp ebx, 0xccccccc
ja 0x40d90b
movzx eax, byte [edx + 1]
inc edx
lea ecx, [ebx + ebx*4]
lea ebx, [eax + ecx*2 - 0x30]
mov al, byte [edx + 1]
cmp al, 0x30
jae 0x40d8c0
cmp ebx, 0x7fffffff
jbe 0x40d910
mov al, byte [edx + 1]
cmp al, 0x30
jb 0x40d8fc
mov edi, edi
cmp al, 0x39
ja 0x40d8fc
mov al, byte [edx + 2]
inc edx
cmp al, 0x30
jae 0x40d8f0
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x3d
jmp 0x40dbef
or ebx, 0xffffffff
jmp 0x40d8e7
test edi, edi
je 0x40d929
inc edx
cmp byte [edx], 0x7d
je 0x40d929
mov eax, dword [esp + 0x18]
mov dword [eax], 0x39
jmp 0x40dbef
test ebx, ebx
jne 0x40d93c
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x3a
jmp 0x40dc10
test esi, esi
je 0x40d95c
mov eax, dword [esp + 0x1c]
cmp ebx, eax
jle 0x40d957
mov eax, dword [esp + 0x18]
mov dword [eax], 0xf
jmp 0x40dbef
sub eax, ebx
lea ebx, [eax + 1]
mov ecx, 0xffffffdd
sub ecx, ebx
mov ebx, ecx
jmp 0x40dbef
mov ebx, 0xffffffe5
jmp 0x40dc10
test esi, esi
jne 0x40d9de
mov ebx, eax
mov al, byte [edx + 1]
mov esi, edx
cmp al, 0x30
jb 0x40d9a2
cmp al, 0x39
ja 0x40d9a2
cmp ebx, 0xccccccc
ja 0x40d9cc
movzx edi, byte [edx + 1]
inc edx
lea eax, [ebx + ebx*4]
lea ebx, [edi + eax*2 - 0x30]
mov al, byte [edx + 1]
cmp al, 0x30
jae 0x40d983
cmp ebx, 0x7fffffff
jbe 0x40d9d1
mov al, byte [edx + 1]
cmp al, 0x30
jb 0x40d9bd
cmp al, 0x39
ja 0x40d9bd
mov al, byte [edx + 2]
inc edx
cmp al, 0x30
jae 0x40d9b1
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x3d
jmp 0x40dbef
or ebx, 0xffffffff
jmp 0x40d9aa
cmp ebx, 0xa
jl 0x40d9ee
cmp ebx, dword [esp + 0x1c]
jle 0x40d9ee
mov edx, esi
movzx ebx, byte [edx]
cmp ebx, 0x38
jl case.0x40d738.0
dec edx
xor ebx, ebx
jmp 0x40dc10
mov eax, 0xffffffdd
sub eax, ebx
mov ebx, eax
jmp 0x40dbef
sub ebx, 0x30
nop
mov al, byte [edx + 1]
inc ecx
cmp al, 0x30
jb 0x40da1a
cmp al, 0x37
ja 0x40da1a
movzx eax, byte [edx + 1]
inc edx
lea ebx, [eax + ebx*8 - 0x30]
cmp ecx, 2
jl 0x40da00
test ebp, ebp
jne 0x40dbef
cmp ebx, 0xff
jle 0x40dbef
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x33
jmp 0x40dbef
test dword [esp + 0x20], 0x2000000
je 0x40daac
movzx eax, byte [edx + 1]
test byte [eax + 0x4ace20], 8
je 0x40dbef
movzx esi, byte [edx + 2]
test byte [esi + 0x4ace20], 8
je 0x40dbef
cmp eax, 0x61
jl 0x40da71
sub eax, 0x20
xor ecx, ecx
cmp eax, 0x41
setge cl
dec ecx
and ecx, 0xfffffff9
add ecx, 0x37
sub eax, ecx
mov edi, eax
cmp esi, 0x61
jl 0x40da8c
sub esi, 0x20
xor eax, eax
cmp esi, 0x41
setge al
shl edi, 4
mov ebx, edi
dec eax
and eax, 0xfffffff9
add eax, 0x37
sub ebx, eax
add ebx, esi
add edx, 2
jmp 0x40dbef
cmp byte [edx + 1], 0x7b
jne 0x40db65
movzx esi, byte [edx + 2]
lea edi, [edx + 2]
xor ebx, ebx
test byte [esi + 0x4ace20], 8
je 0x40db38
inc edi
test ebx, ebx
jne 0x40dad2
cmp esi, 0x30
je 0x40db04
cmp esi, 0x61
jl 0x40dada
sub esi, 0x20
xor eax, eax
cmp esi, 0x41
setge al
shl ebx, 4
dec eax
and eax, 0xfffffff9
add eax, 0x37
sub ebx, eax
add ebx, esi
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x10ff00
add eax, 0xff
cmp ebx, eax
jg 0x40db60
movzx esi, byte [edi]
test byte [esi + 0x4ace20], 8
jne 0x40dac8
test ebx, ebx
jns 0x40db38
movzx eax, byte [edi]
test byte [eax + 0x4ace20], 8
je 0x40db2e
movzx eax, byte [edi + 1]
inc edi
test byte [eax + 0x4ace20], 8
jne 0x40db20
mov eax, dword [esp + 0x18]
mov dword [eax], 0x22
cmp byte [edi], 0x7d
jne 0x40db65
test ebp, ebp
je 0x40db59
lea ecx, [ebx - 0xd800]
cmp ecx, 0x7ff
ja 0x40db59
mov edx, dword [esp + 0x18]
mov dword [edx], 0x49
mov edx, edi
jmp 0x40dbef
or ebx, 0xffffffff
jmp 0x40db14
xor ebx, ebx
jmp 0x40db70
movzx eax, byte [edx + 1]
inc ecx
test byte [eax + 0x4ace20], 8
je 0x40dbef
movzx esi, byte [edx + 1]
inc edx
cmp esi, 0x61
jl 0x40db8b
sub esi, 0x20
xor eax, eax
cmp esi, 0x41
setge al
shl ebx, 4
dec eax
and eax, 0xfffffff9
add eax, 0x37
sub ebx, eax
add ebx, esi
cmp ecx, 2
jl 0x40db70
jmp 0x40dbef
movzx ebx, byte [edx + 1]
inc edx
test ebx, ebx
jne 0x40dbbd
mov ecx, dword [esp + 0x18]
mov dword [ecx], 2
jmp 0x40dc10
cmp ebx, 0x7f
jle 0x40dbce
mov eax, dword [esp + 0x18]
mov dword [eax], 0x44
jmp 0x40dbef
lea ecx, [ebx - 0x61]
cmp ecx, 0x19
ja 0x40dbd9
sub ebx, 0x20
xor ebx, 0x40
jmp 0x40dbef
test byte [esp + 0x20], 0x40
je 0x40dbef
mov eax, dword [esp + 0x18]
mov dword [eax], 3
cmp ebx, 0xfffffff4
jne 0x40dc10
cmp byte [edx + 1], 0x7b
jne 0x40dc10
lea eax, [edx + 2]
call fcn.0040d590
test eax, eax
jne 0x40dc10
mov ecx, dword [esp + 0x18]
mov dword [ecx], 0x25
pop edi
test dword [esp + 0x1c], 0x20000000
je 0x40dc30
mov ecx, dword [esp + 0x10]
lea eax, [ebx + 0xb]
mov dword [ecx], edx
cmp eax, 5
ja 0x40dc36
pop esi
pop ebp
lea eax, [ebx - 0x17]
pop ebx
ret
mov eax, dword [esp + 0x10]
mov dword [eax], edx
pop esi
pop ebp
mov eax, ebx
pop ebx
ret