Function at 0xf5cd71
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push 0x4012c6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x128
push ebx
push esi
push edi
mov dword [ebp - 0xc], esp
mov dword [ebp - 8], 0x401240
mov esi, 0xf59ff0
push 3
lea eax, [ebp - 0x30]
xor edi, edi
push esi
push eax
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x64], edi
mov dword [ebp - 0x84], edi
mov dword [ebp - 0xa8], edi
mov dword [ebp - 0xac], edi
mov dword [ebp - 0xb0], edi
mov dword [ebp - 0xb4], edi
mov dword [ebp - 0xb8], edi
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xcc], edi
mov dword [ebp - 0xd0], edi
mov dword [ebp - 0xe0], edi
mov dword [ebp - 0xe4], edi
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0xec], edi
mov dword [ebp - 0xf0], edi
call sub.MSVBVM60.DLL___vbaAryConstruct2
push 3
lea eax, [ebp - 0x58]
push esi
push eax
call sub.MSVBVM60.DLL___vbaAryConstruct2
push 0x11
lea eax, [ebp - 0x7c]
push 0xf5a00c
push eax
call sub.MSVBVM60.DLL___vbaAryConstruct2
push 3
lea eax, [ebp - 0x9c]
push esi
push eax
call sub.MSVBVM60.DLL___vbaAryConstruct2
mov esi, dword [ebp + 8]
push edi
push 0xffffffffffffffff
push 1
push edi
push 0xf59fe0
push dword [esi]
call sub.MSVBVM60.DLL_rtcReplace
mov edx, eax
mov ecx, esi
call sub.MSVBVM60.DLL___vbaStrMove
push edi
push 0xffffffffffffffff
push 1
push edi
push 0xf59fe8
push dword [esi]
call sub.MSVBVM60.DLL_rtcReplace
mov edx, eax
mov ecx, esi
call sub.MSVBVM60.DLL___vbaStrMove
push dword [esi]
call sub.MSVBVM60.DLL___vbaLenBstr
push 4
cdq
pop ecx
idiv ecx
cmp edx, edi
jne 0xf5d3e4
push 0x3d
call sub.MSVBVM60.DLL_rtcBstrFromAnsi
mov edx, eax
lea ecx, [ebp - 0xb8]
call sub.MSVBVM60.DLL___vbaStrMove
push 0x3d
call sub.MSVBVM60.DLL_rtcBstrFromAnsi
mov edx, eax
lea ecx, [ebp - 0xbc]
call sub.MSVBVM60.DLL___vbaStrMove
mov edx, dword [ebp - 0xb8]
mov ebx, dword [ebp - 0xbc]
push edi
push 0xffffffffffffffff
lea ecx, [ebp - 0xac]
mov dword [ebp - 0xb8], edi
mov dword [ebp - 0xbc], edi
call sub.MSVBVM60.DLL___vbaStrMove
push eax
mov edx, ebx
lea ecx, [ebp - 0xb0]
call sub.MSVBVM60.DLL___vbaStrMove
push eax
call sub.MSVBVM60.DLL___vbaStrCat
mov edx, eax
lea ecx, [ebp - 0xb4]
call sub.MSVBVM60.DLL___vbaStrMove
push eax
push dword [esi]
call sub.MSVBVM60.DLL_rtcInStrRev
mov ebx, eax
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0xb0]
neg ebx
push eax
lea eax, [ebp - 0xac]
sbb ebx, ebx
push eax
neg ebx
push 5
neg ebx
call sub.MSVBVM60.DLL___vbaFreeStrList
add esp, 0x18
cmp bx, di
je 0xf5cf45
mov dword [ebp - 0x64], 2
jmp 0xf5cfa9
push 0x3d
call sub.MSVBVM60.DLL_rtcBstrFromAnsi
mov edx, eax
lea ecx, [ebp - 0xb0]
call sub.MSVBVM60.DLL___vbaStrMove
mov edx, dword [ebp - 0xb0]
push edi
push 0xffffffffffffffff
lea ecx, [ebp - 0xac]
mov dword [ebp - 0xb0], edi
call sub.MSVBVM60.DLL___vbaStrMove
push eax
push dword [esi]
call sub.MSVBVM60.DLL_rtcInStrRev
mov ebx, eax
lea eax, [ebp - 0xb0]
neg ebx
push eax
lea eax, [ebp - 0xac]
sbb ebx, ebx
push eax
neg ebx
push 2
neg ebx
call sub.MSVBVM60.DLL___vbaFreeStrList
add esp, 0xc
cmp bx, di
je 0xf5cfa9
mov dword [ebp - 0x64], 1
xor ebx, ebx
mov eax, 0xff
cmp ebx, eax
jg 0xf5d05f
cmp ebx, 0x41
jl 0xf5cfd6
cmp ebx, 0x5a
jg 0xf5cfd6
cmp ebx, 0x100
jb 0xf5cfcf
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov ecx, ebx
sub ecx, 0x41
jmp 0xf5d010
cmp ebx, 0x61
jl 0xf5cff4
cmp ebx, 0x7a
jg 0xf5cff4
cmp ebx, 0x100
jb 0xf5cfed
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov ecx, ebx
sub ecx, 0x47
jmp 0xf5d010
cmp ebx, 0x30
jl 0xf5d023
cmp ebx, 0x39
jg 0xf5d023
cmp ebx, 0x100
jb 0xf5d00b
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov ecx, ebx
add ecx, 4
jo 0xf5d4d7
call sub.MSVBVM60.DLL___vbaUI1I4
mov ecx, dword [ebp - 0x70]
mov byte [ecx + ebx], al
jmp 0xf5d04d
cmp ebx, 0x2b
jne 0xf5d039
mov cx, 0x3e
call sub.MSVBVM60.DLL___vbaUI1I2
mov ecx, dword [ebp - 0x70]
mov byte [ecx + 0x2b], al
jmp 0xf5d04d
cmp ebx, 0x2f
jne 0xf5d04d
mov cx, 0x3f
call sub.MSVBVM60.DLL___vbaUI1I2
mov ecx, dword [ebp - 0x70]
mov byte [ecx + 0x2f], al
push 1
pop eax
add eax, ebx
jo 0xf5d4d7
mov ebx, eax
jmp 0xf5cfab
xor ebx, ebx
push 0x3f
pop eax
cmp ebx, eax
jg 0xf5d0d1
cmp ebx, 0x40
jb 0xf5d072
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, ebx
mov ecx, dword [ebp - 0x24]
imul eax, eax, 0x40
jo 0xf5d4d7
cmp ebx, 0x40
mov dword [ecx + ebx*4], eax
jb 0xf5d08d
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, ebx
mov ecx, dword [ebp - 0x4c]
imul eax, eax, 0x1000
jo 0xf5d4d7
cmp ebx, 0x40
mov dword [ecx + ebx*4], eax
jb 0xf5d0ab
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, ebx
mov ecx, dword [ebp - 0x90]
imul eax, eax, 0x40000
jo 0xf5d4d7
push 1
mov dword [ecx + ebx*4], eax
pop eax
add eax, ebx
jo 0xf5d4d7
mov ebx, eax
jmp 0xf5d061
mov dword [ebp - 0xd8], esi
mov esi, 0x80
push edi
lea eax, [ebp - 0xe0]
push esi
push eax
lea eax, [ebp - 0xcc]
mov dword [ebp - 0xe0], 0x4008
push eax
call sub.MSVBVM60.DLL_rtcStrConvVar2
lea eax, [ebp - 0xcc]
push eax
lea eax, [ebp - 0xd0]
push eax
call sub.MSVBVM60.DLL___vbaVar2Vec
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0x38]
push eax
call sub.MSVBVM60.DLL___vbaAryMove
lea ecx, [ebp - 0xcc]
call sub.MSVBVM60.DLL___vbaFreeVar
push edi
push dword [ebp - 0x38]
push 1
pop ebx
push ebx
call sub.MSVBVM60.DLL___vbaUbound
add eax, ebx
push 4
jo 0xf5d4d7
cdq
pop ecx
idiv ecx
imul eax, eax, 3
jo 0xf5d4d7
sub eax, ebx
jo 0xf5d4d7
push eax
push ebx
lea eax, [ebp - 0x18]
push 0x11
push eax
push ebx
push esi
call sub.MSVBVM60.DLL___vbaRedim
add esp, 0x1c
push dword [ebp - 0x38]
push ebx
call sub.MSVBVM60.DLL___vbaUbound
mov dword [ebp - 0x128], eax
mov dword [ebp - 0x124], 4
mov dword [ebp - 0xa4], edi
mov eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x128]
jg 0xf5d350
push eax
push dword [ebp - 0x38]
call sub.MSVBVM60.DLL___vbaDerefAry1
movzx eax, byte [eax]
mov esi, 0x100
mov dword [ebp - 0xf4], eax
cmp eax, esi
jb 0xf5d1be
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0x70]
movzx eax, byte [ecx + eax]
cmp eax, 0x40
mov dword [ebp - 0xf8], eax
jb 0xf5d1d5
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0xa4]
add eax, ebx
jo 0xf5d4d7
push eax
push dword [ebp - 0x38]
call sub.MSVBVM60.DLL___vbaDerefAry1
movzx ebx, byte [eax]
cmp ebx, esi
jb 0xf5d1f8
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0x70]
movzx eax, byte [eax + ebx]
cmp eax, 0x40
mov dword [ebp - 0x100], eax
jb 0xf5d20f
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0xa4]
add eax, 2
jo 0xf5d4d7
push eax
push dword [ebp - 0x38]
call sub.MSVBVM60.DLL___vbaDerefAry1
movzx ebx, byte [eax]
cmp ebx, esi
jb 0xf5d233
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0x70]
movzx eax, byte [eax + ebx]
cmp eax, 0x40
mov dword [ebp - 0x108], eax
jb 0xf5d24a
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0xa4]
add eax, 3
jo 0xf5d4d7
push eax
push dword [ebp - 0x38]
call sub.MSVBVM60.DLL___vbaDerefAry1
movzx ebx, byte [eax]
cmp ebx, esi
jb 0xf5d26e
call sub.MSVBVM60.DLL___vbaGenerateBoundsError
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0xf8]
mov esi, dword [eax + ecx*4]
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x100]
add esi, dword [eax + ecx*4]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x108]
jo 0xf5d4d7
add esi, dword [eax + ecx*4]
mov eax, dword [ebp - 0x70]
movzx eax, byte [eax + ebx]
jo 0xf5d4d7
add esi, eax
jo 0xf5d4d7
mov dword [ebp - 0x40], esi
xor ecx, ecx
mov cl, byte [ebp - 0x3e]
call sub.MSVBVM60.DLL___vbaUI1I4
push dword [ebp - 0x3c]
mov bl, al
push dword [ebp - 0x18]
call sub.MSVBVM60.DLL___vbaDerefAry1
mov byte [eax], bl
mov eax, esi
and eax, 0xff00
mov ecx, 0x100
cdq
idiv ecx
mov ecx, eax
call sub.MSVBVM60.DLL___vbaUI1I4
mov bl, al
mov eax, dword [ebp - 0x3c]
add eax, 1
jo 0xf5d4d7
push eax
push dword [ebp - 0x18]
call sub.MSVBVM60.DLL___vbaDerefAry1
mov ecx, esi
mov byte [eax], bl
and ecx, 0xff
call sub.MSVBVM60.DLL___vbaUI1I4
mov bl, al
mov eax, dword [ebp - 0x3c]
add eax, 2
jo 0xf5d4d7
push eax
push dword [ebp - 0x18]
call sub.MSVBVM60.DLL___vbaDerefAry1
mov byte [eax], bl
mov eax, dword [ebp - 0x3c]
add eax, 3
push 1
jo 0xf5d4d7
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x124]
add eax, dword [ebp - 0xa4]
pop ebx
jo 0xf5d4d7
mov dword [ebp - 0xa4], eax
jmp 0xf5d186
lea eax, [ebp - 0x18]
push edi
mov dword [ebp - 0xd8], eax
lea eax, [ebp - 0xe0]
push 0x40
push eax
lea eax, [ebp - 0xcc]
mov dword [ebp - 0xe0], 0x6011
push eax
call sub.MSVBVM60.DLL_rtcStrConvVar2
lea eax, [ebp - 0xcc]
push eax
call sub.MSVBVM60.DLL___vbaStrVarMove
mov edx, eax
lea ecx, [ebp - 0x84]
call sub.MSVBVM60.DLL___vbaStrMove
lea ecx, [ebp - 0xcc]
call sub.MSVBVM60.DLL___vbaFreeVar
cmp word [ebp - 0x64], di
je 0xf5d3d3
push dword [ebp - 0x84]
call sub.MSVBVM60.DLL___vbaLenBstr
movsx ecx, word [ebp - 0x64]
sub eax, ecx
jo 0xf5d4d7
push eax
push dword [ebp - 0x84]
call sub.MSVBVM60.DLL_rtcLeftCharBstr
mov edx, eax
lea ecx, [ebp - 0x84]
call sub.MSVBVM60.DLL___vbaStrMove
mov edx, dword [ebp - 0x84]
lea ecx, [ebp - 0xa8]
call sub.MSVBVM60.DLL___vbaStrCopy
push 0xf5d4c0
jmp 0xf5d443
lea eax, [ebp - 0x18]
xor edi, edi
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
lea eax, [ebp - 0x30]
mov dword [ebp - 0xe4], eax
lea eax, [ebp - 0xe4]
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
lea eax, [ebp - 0x38]
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
lea eax, [ebp - 0x58]
mov dword [ebp - 0xe8], eax
lea eax, [ebp - 0xe8]
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
lea eax, [ebp - 0x7c]
mov dword [ebp - 0xec], eax
lea eax, [ebp - 0xec]
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
lea ecx, [ebp - 0x84]
call sub.MSVBVM60.DLL___vbaFreeStr
lea eax, [ebp - 0x9c]
mov dword [ebp - 0xf0], eax
lea eax, [ebp - 0xf0]
push eax
push edi
call sub.MSVBVM60.DLL___vbaAryDestruct
ret
call sub.MSVBVM60.DLL___vbaErrorOverflow