Function at 0x40d395
Capabilities:
Encode data using base64

Disassembly:
mov eax, 0x4134e4
call fcn.00402a4a
sub esp, 0x94
push ebx
mov ebx, dword [ebp + 8]
mov eax, edx
push esi
movzx esi, byte [eax + 0xd]
or esi, dword [ebx]
push edi
mov edi, ecx
mov dword [ebx], esi
mov dword [ebp - 0x14], eax
mov eax, dword [edi + 0xc]
xor eax, esi
and eax, 0xff0000
xor dword [edi + 0xc], eax
mov ecx, dword [0x42c268]
mov eax, ecx
xor edx, edx
push 0x15
pop esi
div esi
mov dword [ebp - 0x24], esi
mov dword [edx*4 + 0x42c268], ecx
mov ecx, dword [0x42c268]
inc ecx
mov dword [0x42c268], ecx
test byte [edi + 0xc], 0x80
je 0x40d41b
mov eax, dword [ebx]
mov esi, dword [ebp - 0x14]
movzx ecx, al
mov eax, dword [edi + 0xc]
mov edx, dword [esi + 0xc]
shl ecx, 8
and eax, 0xffff0000
or ecx, eax
and edx, 3
or ecx, edx
mov dword [edi + 0xc], ecx
mov ecx, dword [0x42c268]
jmp 0x40d435
cmp dword [edi + 0x14], 0
je 0x40d427
cmp byte [edi + 0xd], 0
jne 0x40d432
mov eax, dword [ebx]
mov byte [edi + 0xd], al
mov ecx, dword [0x42c268]
mov esi, dword [ebp - 0x14]
test dword [ebx], 0x800000
je 0x40d463
xor edx, edx
mov eax, ecx
div dword [ebp - 0x24]
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
lea ecx, [ebx + 4]
mov edx, esi
call fcn.0040e767
test eax, eax
jne 0x40d930
mov esi, dword [ebx]
and esi, 0x800000
push 0
neg esi
push edi
sbb esi, esi
push 1
lea ecx, [ebp - 0x64]
and esi, 0x800001
call fcn.0040cc2c
xor edi, edi
push edi
push dword [ebp - 0x14]
lea ecx, [ebp - 0x9c]
push esi
call fcn.0040cc2c
push 0xc
lea eax, [ebp - 0x80]
push ebx
push eax
call fcn.00401225
mov ecx, 0x20000
add esp, 0xc
test dword [ebx], ecx
je 0x40d597
test dword [ebx], 0x200000
je 0x40d530
mov eax, dword [0x42be14]
imul eax, eax, 0x343fd
add eax, 0x269ec3
mov dword [0x42be14], eax
shr eax, 0x10
and eax, 0x3f
test dword [ebx], ecx
je 0x40d4e1
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
mov esi, dword [ebp + 0x10]
lea ecx, [ebp - 0x64]
movzx eax, byte [eax + esi]
push eax
call fcn.0040cfd5
mov eax, dword [0x42be14]
imul eax, eax, 0x343fd
add eax, 0x269ec3
mov dword [0x42be14], eax
shr eax, 0x10
and eax, 0x3f
test dword [ebx], 0x20000
je 0x40d51e
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
movzx eax, byte [eax + esi]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
push 2
pop edx
jmp 0x40d588
test dword [ebx], ecx
je 0x40d540
xor edx, edx
lea ecx, [ebp + 0xc]
call fcn.0040d310
jmp 0x40d542
mov eax, edi
mov esi, dword [ebp + 0x10]
lea ecx, [ebp - 0x64]
movzx eax, byte [eax + esi]
push eax
call fcn.0040cfd5
test dword [ebx], 0x20000
je 0x40d566
xor edx, edx
lea ecx, [ebp + 0xc]
call fcn.0040d310
jmp 0x40d568
mov eax, edi
movzx eax, byte [eax + esi]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
mov eax, dword [0x42c278]
push 2
cmp eax, 1
pop edx
cmove eax, edx
mov dword [0x42c278], eax
mov ecx, dword [ebp + 0xc]
mov eax, ecx
rol eax, 0x10
xor ecx, eax
mov dword [ebp + 0xc], ecx
jmp 0x40d59a
push 2
pop edx
mov eax, dword [0x42c294]
mov ecx, dword [ebp - 0x6c]
cmp eax, 1
cmove eax, edx
mov dword [0x42c294], eax
mov eax, dword [ebp - 0x74]
shr ecx, 0x18
add ecx, dword [eax + 0x14]
mov dword [ebp - 0x20], edi
sub ecx, dword [ebp - 0x70]
je 0x40d8e3
mov dword [ebp - 0x2c], 0xa
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x14], edi
call fcn.0040ce02
mov bl, al
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x9c]
call fcn.0040ce02
mov byte [ebp - 0x15], al
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x9c]
call fcn.0040ce02
movzx esi, bl
mov ebx, dword [ebp + 8]
mov byte [ebp - 0xd], al
mov eax, esi
shr eax, 2
test dword [ebx], 0x20000
je 0x40d61e
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
mov ecx, dword [ebp + 0x10]
movzx eax, byte [eax + ecx]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
movzx eax, byte [ebp - 0x15]
and esi, 3
mov dword [ebp - 0x28], eax
shl esi, 4
shr eax, 4
add eax, esi
test dword [ebx], 0x20000
je 0x40d652
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
mov esi, dword [ebp + 0x10]
lea ecx, [ebp - 0x64]
movzx eax, byte [eax + esi]
push eax
call fcn.0040cfd5
cmp dword [ebp - 0x14], 1
jle 0x40d697
movzx eax, byte [ebp - 0xd]
mov ecx, dword [ebp - 0x28]
and ecx, 0xf
shr eax, 6
test dword [ebx], 0x20000
lea eax, [eax + ecx*4]
je 0x40d68a
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
movzx eax, byte [eax + esi]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
mov ecx, dword [0x42c268]
xor edx, edx
mov eax, ecx
div dword [ebp - 0x24]
push 2
pop eax
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
cmp dword [ebp - 0x14], eax
jle 0x40d6df
movzx eax, byte [ebp - 0xd]
and eax, 0x3f
test dword [ebx], 0x20000
je 0x40d6d2
mov edx, eax
lea ecx, [ebp + 0xc]
call fcn.0040d310
movzx eax, byte [eax + esi]
push eax
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x1c]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0x32
jle 0x40d705
push edi
push str.there
push 0x42682c
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
test byte [ebp - 0xd], 0xaa
mov esi, dword [ebp - 0x20]
mov ecx, dword [0x42c268]
push 0
pop eax
setne al
xor edx, edx
add esi, eax
mov eax, ecx
div dword [ebp - 0x24]
mov dword [ebp - 0x20], esi
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
mov eax, dword [ebx]
not eax
test eax, sym.imp.ADVAPI32.dll_RegDeleteKeyW
jne 0x40d816
cmp esi, 0xfa
jbe 0x40d816
mov ecx, dword [0x473ac8]
test ecx, ecx
jne 0x40d795
push 0x1c
call fcn.004015b8
pop ecx
mov ecx, eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 4], edi
test ecx, ecx
je 0x40d789
push 0x16
pop eax
mov dword [ecx], vtable.fkce.0
mov dword [ecx + 4], str.___________:
mov dword [ecx + 0xc], 0x1000101
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
jmp 0x40d78b
mov ecx, edi
or dword [ebp - 4], 0xffffffff
mov dword [0x473ac8], ecx
mov esi, dword [0x42be14]
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov eax, esi
shr eax, 0x10
and eax, 0x7fff
add eax, dword [ebp - 0x28]
xor edx, edx
div dword [ebp - 0x2c]
mov dword [ebp - 0x20], edi
mov dword [0x42be14], esi
mov eax, edx
add eax, 0x3e8
mov dword [ebp - 0x1c], eax
je 0x40d816
mov ebx, eax
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov dword [0x42be14], esi
shr esi, 0x10
and esi, 0x7fff
xor edx, edx
mov eax, esi
div dword [ecx + 0x14]
mov eax, dword [ecx + 4]
lea ecx, [ebp - 0x64]
movzx eax, byte [edx + eax]
push eax
call fcn.0040cfd5
dec ebx
je 0x40d813
mov ecx, dword [0x473ac8]
mov esi, dword [0x42be14]
jmp 0x40d7d0
mov ebx, dword [ebp + 8]
mov eax, dword [ebx]
not eax
test eax, 0x60000
jne 0x40d8cb
mov al, byte [ebp - 0xd]
and al, 7
cmp al, 7
jne 0x40d8cb
mov dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x1c]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0x32
jle 0x40d858
push edi
push str.there
push 0x42682c
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
mov al, byte [ebp - 0xd]
and al, 0xa0
lea ecx, [ebp - 0x64]
cmp al, 0xa0
jne 0x40d870
push 0x20
call fcn.0040cfd5
push 0x15
pop esi
jmp 0x40d8b2
mov eax, dword [0x42c26c]
push 2
pop edx
cmp eax, 1
cmove eax, edx
push 0xd
mov dword [0x42c26c], eax
call fcn.0040cfd5
mov ecx, dword [0x42c268]
push 0x15
pop esi
mov eax, ecx
xor edx, edx
div esi
push 0xa
pop eax
push eax
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
mov ecx, dword [0x42c268]
xor edx, edx
mov eax, ecx
div esi
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x74]
shr ecx, 0x18
add ecx, dword [eax + 0x14]
sub ecx, dword [ebp - 0x70]
jne 0x40d5c9
mov edi, dword [ebp - 0x14]
test dword [ebx], 0x10000
je 0x40d901
push 3
pop ebx
sub ebx, edi
test ebx, ebx
jle 0x40d901
push 0x3d
lea ecx, [ebp - 0x64]
call fcn.0040cfd5
dec ebx
jne 0x40d8f4
lea ecx, [ebp - 0x64]
call fcn.0040d253
test al, al
jne 0x40d912
push 0xfffffffffffffffc
pop eax
jmp 0x40d930
mov ecx, dword [0x42c268]
xor edx, edx
push 0x15
mov eax, ecx
pop ebx
div ebx
mov dword [edx*4 + 0x42c268], ecx
inc dword [0x42c268]
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret