Function at 0x514650
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push 0x404936
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x108
push ebx
push esi
push edi
mov dword [ebp - 0xc], esp
mov dword [ebp - 8], 0x404460
mov ebx, dword [ebp + 8]
xor esi, esi
push esi
push 0xffffffffffffffff
mov eax, dword [ebx]
push 0x421fbc
push eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x9c], esi
mov dword [ebp - 0xac], esi
mov dword [ebp - 0xbc], esi
mov dword [ebp - 0xdc], esi
mov dword [ebp - 0xfc], esi
call dword [sym.imp.MSVBVM60.DLL_rtcInStrRev]
mov edx, dword [ebx]
lea ecx, [ebp - 0x5c]
add eax, 1
push ecx
jo 0x514f5d
push eax
push edx
mov dword [ebp - 0x54], 0x80020004
mov dword [ebp - 0x5c], 0xa
call dword [sym.imp.MSVBVM60.DLL_rtcMidCharBstr]
mov edi, dword [sym.imp.MSVBVM60.DLL___vbaStrMove]
mov edx, eax
lea ecx, [ebp - 0x40]
call edi
lea ecx, [ebp - 0x5c]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
mov eax, dword [ebp - 0x40]
push 0x42f844
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrCat]
mov edx, eax
lea ecx, [ebp - 0x44]
call edi
push eax
push 0x422d30
call dword [sym.imp.MSVBVM60.DLL___vbaStrCat]
mov edx, eax
lea ecx, [ebp - 0x28]
call edi
lea ecx, [ebp - 0x44]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
mov ecx, dword [ebx]
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcFileLen]
mov ecx, eax
mov eax, 0xb60b60b7
imul ecx
add edx, ecx
mov dword [ebp - 0x38], ecx
sar edx, 5
mov eax, edx
lea ecx, [ebp - 0x5c]
shr eax, 0x1f
add edx, eax
push 0x2d
add edx, 1
push ecx
jo 0x514f5d
mov dword [ebp - 0x34], edx
call dword [sym.imp.MSVBVM60.DLL_rtcSpaceVar]
lea edx, [ebp - 0x5c]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x1c]
call edi
lea ecx, [ebp - 0x5c]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x54], 0x80020004
push eax
mov dword [ebp - 0x5c], 0xa
call dword [sym.imp.MSVBVM60.DLL_rtcFreeFile]
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x20], eax
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
mov ecx, dword [ebx]
mov edx, dword [ebp - 0x20]
push ecx
push edx
push 0xffffffffffffffff
push 0x20
call dword [sym.imp.MSVBVM60.DLL___vbaFileOpen]
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaStrVarVal]
mov eax, 1
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x34]
cmp eax, ecx
jg 0x514e63
jne 0x514817
mov eax, dword [ebp - 0x38]
mov ecx, 0x2d
cdq
idiv ecx
push edx
lea edx, [ebp - 0x5c]
push edx
call dword [sym.imp.MSVBVM60.DLL_rtcSpaceVar]
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x1c]
call edi
lea ecx, [ebp - 0x5c]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
mov ecx, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
push ecx
push edx
push esi
call dword [sym.imp.MSVBVM60.DLL___vbaGet3]
mov eax, dword [ebp - 0x1c]
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
push eax
call esi
add eax, 0x20
lea ecx, [ebp - 0x5c]
jo 0x514f5d
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcVarBstrFromAnsi]
lea edx, [ebp - 0x5c]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
lea ecx, [ebp - 0x5c]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
mov eax, dword [ebp - 0x1c]
push eax
call esi
cdq
mov ecx, 3
mov esi, dword [ebp - 0x18]
idiv ecx
mov ecx, dword [ebp - 0x34]
xor eax, eax
cmp esi, ecx
sete al
movsx eax, ax
neg eax
test eax, edx
je 0x5148f1
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xbc], 8
push eax
mov dword [ebp - 0xb4], eax
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
cdq
mov ecx, 3
idiv ecx
mov eax, ecx
lea ecx, [ebp - 0x5c]
sub eax, edx
jo 0x514f5d
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcSpaceVar]
lea edx, [ebp - 0xbc]
lea eax, [ebp - 0x5c]
push edx
lea ecx, [ebp - 0x6c]
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x1c]
call edi
lea edx, [ebp - 0x6c]
lea eax, [ebp - 0x5c]
push edx
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
add esp, 0xc
mov ecx, dword [ebp - 0x1c]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
mov ecx, eax
call dword [sym.imp.MSVBVM60.DLL___vbaI2I4]
mov dword [ebp - 0x108], eax
mov esi, 1
cmp si, word [ebp - 0x108]
jg 0x514deb
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x1c]
mov dword [ebp - 0xb4], eax
lea ecx, [ebp - 0x5c]
movsx eax, si
mov dword [ebp - 0xd4], edx
push ecx
push eax
lea edx, [ebp - 0xbc]
lea eax, [ebp - 0x6c]
push edx
push eax
mov dword [ebp - 0xdc], 8
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x5c], 2
mov dword [ebp - 0xbc], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcMidCharVar]
lea ecx, [ebp - 0x6c]
lea edx, [ebp - 0x44]
push ecx
push edx
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
cwd
and dx, 3
lea ecx, [ebp - 0x7c]
add ax, dx
sar ax, 2
add ax, 0x20
jo 0x514f5d
movsx eax, ax
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcVarBstrFromAnsi]
lea edx, [ebp - 0xdc]
lea eax, [ebp - 0x7c]
push edx
lea ecx, [ebp - 0x8c]
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
lea ecx, [ebp - 0x44]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
lea edx, [ebp - 0x8c]
lea eax, [ebp - 0x7c]
push edx
lea ecx, [ebp - 0x6c]
push eax
lea edx, [ebp - 0x5c]
push ecx
push edx
push 4
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
mov eax, dword [ebp - 0x2c]
add esp, 0x14
mov dword [ebp - 0xf4], eax
lea edx, [ebp - 0x5c]
movsx eax, si
lea ecx, [ebp - 0x1c]
push edx
push eax
mov dword [ebp - 0xb4], ecx
lea eax, [ebp - 0xbc]
lea ecx, [ebp - 0x6c]
push eax
push ecx
mov dword [ebp - 0xfc], 8
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x5c], 2
mov dword [ebp - 0xbc], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcMidCharVar]
lea edx, [ebp - 0x1c]
mov dword [ebp - 0x74], 1
mov dword [ebp - 0x7c], 2
mov dword [ebp - 0xd4], edx
mov cx, si
lea eax, [ebp - 0x7c]
add cx, 1
push eax
jo 0x514f5d
movsx edx, cx
lea eax, [ebp - 0xdc]
push edx
lea ecx, [ebp - 0x8c]
push eax
push ecx
mov dword [ebp - 0xdc], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcMidCharVar]
lea edx, [ebp - 0x6c]
lea eax, [ebp - 0x44]
push edx
push eax
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
mov dx, ax
and dx, 3
jns 0x514aa4
dec dx
or dx, 0xfffc
inc dx
imul dx, dx, 0x10
lea ecx, [ebp - 0x8c]
lea eax, [ebp - 0x48]
push ecx
push eax
jo 0x514f5d
mov word [ebp - 0x11a], dx
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
mov cx, word [ebp - 0x11a]
cwd
and dx, 0xf
add ax, dx
sar ax, 4
add cx, ax
lea eax, [ebp - 0x9c]
jo 0x514f5d
add cx, 0x20
jo 0x514f5d
movsx edx, cx
push edx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcVarBstrFromAnsi]
lea ecx, [ebp - 0xfc]
lea edx, [ebp - 0x9c]
push ecx
lea eax, [ebp - 0xac]
push edx
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
lea ecx, [ebp - 0x48]
lea edx, [ebp - 0x44]
push ecx
push edx
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
lea eax, [ebp - 0xac]
lea ecx, [ebp - 0x9c]
push eax
lea edx, [ebp - 0x8c]
push ecx
lea eax, [ebp - 0x7c]
push edx
lea ecx, [ebp - 0x6c]
push eax
lea edx, [ebp - 0x5c]
push ecx
push edx
push 6
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
mov eax, dword [ebp - 0x2c]
add esp, 0x28
mov dword [ebp - 0xf4], eax
mov ax, si
lea ecx, [ebp - 0x1c]
add ax, 1
mov ebx, dword [sym.imp.MSVBVM60.DLL_rtcMidCharVar]
mov dword [ebp - 0xb4], ecx
jo 0x514f5d
lea edx, [ebp - 0x5c]
mov dword [ebp - 0xfc], 8
movsx ecx, ax
push edx
lea edx, [ebp - 0xbc]
push ecx
lea eax, [ebp - 0x6c]
push edx
push eax
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x5c], 2
mov dword [ebp - 0xbc], 0x4008
call ebx
mov dword [ebp - 0x74], 1
mov dword [ebp - 0x7c], 2
lea ecx, [ebp - 0x1c]
mov ax, si
mov dword [ebp - 0xd4], ecx
add ax, 2
lea edx, [ebp - 0x7c]
jo 0x514f5d
movsx ecx, ax
push edx
lea edx, [ebp - 0xdc]
push ecx
lea eax, [ebp - 0x8c]
push edx
push eax
mov dword [ebp - 0xdc], 0x4008
call ebx
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaStrVarVal]
lea ecx, [ebp - 0x6c]
lea edx, [ebp - 0x44]
push ecx
push edx
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
mov dx, ax
and dx, 0xf
jns 0x514c30
dec dx
or dx, 0xfff0
inc dx
imul dx, dx, 4
lea eax, [ebp - 0x8c]
lea ecx, [ebp - 0x48]
push eax
push ecx
jo 0x514f5d
mov word [ebp - 0x11c], dx
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
cwd
and dx, 0x3f
lea ecx, [ebp - 0x9c]
add ax, dx
mov dx, word [ebp - 0x11c]
sar ax, 6
add dx, ax
jo 0x514f5d
add dx, 0x20
jo 0x514f5d
movsx eax, dx
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcVarBstrFromAnsi]
lea edx, [ebp - 0xfc]
lea eax, [ebp - 0x9c]
push edx
lea ecx, [ebp - 0xac]
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
lea edx, [ebp - 0x48]
lea eax, [ebp - 0x44]
push edx
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
lea ecx, [ebp - 0xac]
lea edx, [ebp - 0x9c]
push ecx
lea eax, [ebp - 0x8c]
push edx
lea ecx, [ebp - 0x7c]
push eax
lea edx, [ebp - 0x6c]
push ecx
lea eax, [ebp - 0x5c]
push edx
push eax
push 6
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
mov ecx, dword [ebp - 0x2c]
add esp, 0x28
mov dword [ebp - 0xd4], ecx
mov cx, si
lea edx, [ebp - 0x1c]
add cx, 2
mov dword [ebp - 0xb4], edx
lea eax, [ebp - 0x5c]
jo 0x514f5d
movsx edx, cx
push eax
lea eax, [ebp - 0xbc]
push edx
lea ecx, [ebp - 0x6c]
push eax
push ecx
mov dword [ebp - 0xdc], 8
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x5c], 2
mov dword [ebp - 0xbc], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcMidCharVar]
lea edx, [ebp - 0x6c]
lea eax, [ebp - 0x44]
push edx
push eax
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaStrVarVal]
call ebx
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcAnsiValueBstr]
and ax, 0x3f
jns 0x514d71
dec ax
or ax, 0xffc0
inc ax
add ax, 0x20
lea edx, [ebp - 0x7c]
jo 0x514f5d
movsx ecx, ax
push ecx
push edx
call dword [sym.imp.MSVBVM60.DLL_rtcVarBstrFromAnsi]
lea eax, [ebp - 0xdc]
lea ecx, [ebp - 0x7c]
push eax
lea edx, [ebp - 0x8c]
push ecx
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
lea ecx, [ebp - 0x44]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
lea eax, [ebp - 0x8c]
lea ecx, [ebp - 0x7c]
push eax
lea edx, [ebp - 0x6c]
push ecx
lea eax, [ebp - 0x5c]
push edx
push eax
push 4
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
mov eax, 3
add esp, 0x14
add ax, si
jo 0x514f5d
mov esi, eax
jmp 0x51490e
mov ecx, dword [ebp - 0x2c]
push 0
push 0xffffffffffffffff
push 1
push 0x428c28
push 0x428fe8
push ecx
call dword [sym.imp.MSVBVM60.DLL_rtcReplace]
mov edx, eax
lea ecx, [ebp - 0x2c]
call edi
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaStrCat]
push edx
push eax
call esi
mov edx, eax
lea ecx, [ebp - 0x44]
call edi
push eax
push 0x422d30
call esi
mov edx, eax
lea ecx, [ebp - 0x28]
call edi
lea ecx, [ebp - 0x44]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
mov edx, 0x4212dc
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVBVM60.DLL___vbaStrCopy]
mov ecx, dword [ebp - 0x18]
mov eax, 1
add eax, ecx
jo 0x514f5d
mov dword [ebp - 0x18], eax
xor esi, esi
jmp 0x5147da
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaFileClose]
mov edx, dword [ebp - 0x28]
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaStrCat]
push edx
push 0x428c28
call esi
mov edx, eax
lea ecx, [ebp - 0x48]
call edi
push eax
push 0x422d30
push 0x42f860
call esi
mov edx, eax
lea ecx, [ebp - 0x44]
call edi
push eax
push 0x422d30
call esi
mov edx, eax
lea ecx, [ebp - 0x4c]
call edi
push eax
call esi
mov edx, eax
lea ecx, [ebp - 0x28]
call edi
lea eax, [ebp - 0x4c]
lea ecx, [ebp - 0x48]
push eax
lea edx, [ebp - 0x44]
push ecx
push edx
push 3
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
mov edx, dword [ebp - 0x28]
add esp, 0x10
lea ecx, [ebp - 0x3c]
call dword [sym.imp.MSVBVM60.DLL___vbaStrCopy]
push 0x514f47
jmp 0x514f2c
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
lea ecx, [ebp - 0x1c]
call esi
lea ecx, [ebp - 0x28]
call esi
lea ecx, [ebp - 0x2c]
call esi
lea ecx, [ebp - 0x40]
call esi
ret
call dword [sym.imp.MSVBVM60.DLL___vbaErrorOverflow]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop