Function at 0x421ec0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push 0x402c16
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xf0
push ebx
push esi
push edi
mov dword [ebp - 0xc], esp
mov dword [ebp - 8], 0x401358
mov esi, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0xe4], eax
mov dword [ebp - 0xf4], eax
mov eax, dword [esi]
push 4
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaStrMove]
mov edx, eax
lea ecx, [ebp - 0x44]
call ebx
push eax
push 0x40f428
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
mov ecx, dword [esi]
mov edi, eax
neg edi
sbb edi, edi
push 3
inc edi
push ecx
neg edi
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x50]
call ebx
push eax
push 0x40f450
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
mov edx, dword [esi]
push 3
neg eax
sbb eax, eax
push edx
inc eax
neg eax
or edi, eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x4c]
call ebx
push eax
push 0x40f444
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
neg eax
sbb eax, eax
push 3
inc eax
neg eax
or edi, eax
mov eax, dword [esi]
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x48]
call ebx
push eax
push 0x40f438
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
mov ecx, dword [esi]
push 3
neg eax
sbb eax, eax
push ecx
inc eax
neg eax
or edi, eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x40]
call ebx
push eax
push 0x40f41c
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
mov edx, dword [esi]
push 2
neg eax
sbb eax, eax
push edx
inc eax
neg eax
or edi, eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x3c]
call ebx
push eax
push 0x40f410
call dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
neg eax
sbb eax, eax
inc eax
neg eax
or edi, eax
mov eax, dword [esi]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
xor ecx, ecx
cmp eax, 1
setle cl
neg ecx
lea edx, [ebp - 0x50]
or edi, ecx
lea eax, [ebp - 0x4c]
push edx
lea ecx, [ebp - 0x48]
push eax
lea edx, [ebp - 0x44]
push ecx
lea eax, [ebp - 0x40]
push edx
lea ecx, [ebp - 0x3c]
push eax
push ecx
push 6
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
add esp, 0x1c
test di, di
je 0x42207b
mov dword [ebp - 0x88], 0x40f3e8
jmp 0x4223ae
lea edx, [ebp - 0x90]
lea eax, [ebp - 0x60]
push edx
push eax
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x90], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcTrimVar]
lea ecx, [ebp - 0x60]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaStrVarMove]
mov edx, eax
mov ecx, esi
call ebx
lea ecx, [ebp - 0x60]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
mov edx, dword [esi]
mov edi, 2
push edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x90], edi
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x90]
lea ecx, [ebp - 0xa0]
push eax
lea edx, [ebp - 0xb0]
push ecx
lea eax, [ebp - 0xd4]
push edx
lea ecx, [ebp - 0xc4]
push eax
lea edx, [ebp - 0x28]
push ecx
push edx
mov dword [ebp - 0xa0], 3
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xb0], edi
call dword [sym.imp.MSVBVM60.DLL___vbaVarForInit]
test eax, eax
je 0x4223a6
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x90]
push eax
lea edx, [ebp - 0x60]
push ecx
push edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x90], edi
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaI4Var]
push eax
mov eax, dword [esi]
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x18]
call ebx
lea ecx, [ebp - 0x60]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
lea edx, [ebp - 0x90]
push 1
lea eax, [ebp - 0x60]
lea ecx, [ebp - 0x18]
push edx
push eax
mov dword [ebp - 0x88], ecx
mov dword [ebp - 0x90], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcRightCharVar]
push 0x20
call dword [sym.imp.MSVBVM60.DLL_rtcBstrFromAnsi]
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x70]
push ecx
push edx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x70], 0x8008
call dword [sym.imp.MSVBVM60.DLL___vbaVarTstEq]
mov edi, eax
lea eax, [ebp - 0x70]
lea ecx, [ebp - 0x60]
push eax
push ecx
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
add esp, 0xc
test di, di
jne 0x4221f0
lea edx, [ebp - 0xd4]
lea eax, [ebp - 0xc4]
push edx
lea ecx, [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaVarForNext]
mov edi, 2
jmp 0x422120
mov edx, dword [esi]
mov edi, 2
push edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x90], edi
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x90]
lea ecx, [ebp - 0xa0]
push eax
lea edx, [ebp - 0xb0]
push ecx
lea eax, [ebp - 0xf4]
push edx
lea ecx, [ebp - 0xe4]
push eax
lea edx, [ebp - 0x28]
push ecx
push edx
mov dword [ebp - 0xa0], 3
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xb0], edi
call dword [sym.imp.MSVBVM60.DLL___vbaVarForInit]
test eax, eax
je 0x42206c
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x90]
push eax
lea edx, [ebp - 0x60]
push ecx
push edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x90], edi
call dword [sym.imp.MSVBVM60.DLL___vbaVarAdd]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaI4Var]
push eax
mov eax, dword [esi]
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov edx, eax
lea ecx, [ebp - 0x18]
call ebx
lea ecx, [ebp - 0x60]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
lea edx, [ebp - 0x90]
push 1
lea eax, [ebp - 0x60]
lea ecx, [ebp - 0x18]
push edx
push eax
mov dword [ebp - 0x88], ecx
mov dword [ebp - 0x90], 0x4008
call dword [sym.imp.MSVBVM60.DLL_rtcRightCharVar]
push 0x20
call dword [sym.imp.MSVBVM60.DLL_rtcBstrFromAnsi]
lea ecx, [ebp - 0x60]
lea edx, [ebp - 0x70]
push ecx
push edx
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x70], 0x8008
call dword [sym.imp.MSVBVM60.DLL___vbaVarTstEq]
mov edi, eax
lea eax, [ebp - 0x70]
lea ecx, [ebp - 0x60]
push eax
push ecx
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
add esp, 0xc
test di, di
jne 0x42232b
lea edx, [ebp - 0xf4]
lea eax, [ebp - 0xe4]
push edx
lea ecx, [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaVarForNext]
mov edi, 2
jmp 0x42225b
mov edx, dword [ebp - 0x18]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaLenBstr]
sub eax, 1
jo 0x42247e
push eax
mov eax, dword [esi]
push eax
call dword [sym.imp.MSVBVM60.DLL_rtcLeftCharBstr]
mov esi, 8
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x60], esi
call dword [sym.imp.MSVBVM60.DLL___vbaVarMove]
lea ecx, [ebp - 0x38]
lea edx, [ebp - 0x60]
push ecx
push edx
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x90], 0x8002
call dword [sym.imp.MSVBVM60.DLL___vbaLenVar]
push eax
lea eax, [ebp - 0x90]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaVarTstEq]
test ax, ax
je 0x4223c7
mov dword [ebp - 0x88], 0x40f3e8
mov dword [ebp - 0x90], esi
jmp 0x4223b8
mov ecx, dword [esi]
mov dword [ebp - 0x88], ecx
mov dword [ebp - 0x90], 8
lea edx, [ebp - 0x90]
lea ecx, [ebp - 0x38]
call dword [sym.imp.MSVBVM60.DLL___vbaVarCopy]
push 0x42244f
jmp 0x422415
lea edx, [ebp - 0xf4]
lea eax, [ebp - 0xe4]
push edx
lea ecx, [ebp - 0xd4]
push eax
lea edx, [ebp - 0xc4]
push ecx
push edx
push 4
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
add esp, 0x14
lea ecx, [ebp - 0x18]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
lea ecx, [ebp - 0x28]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVar]
ret
call dword [sym.imp.MSVBVM60.DLL___vbaErrorOverflow]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop