Function at 0x556a12
Capabilities:
Parse pe header

Disassembly:
neg edx
mov word [ebp - 0x50], dx
mov dword [ebp - 4], 0x22
movsx eax, word [ebp - 0x50]
test eax, eax
je 0x556b93
mov dword [ebp - 4], 0x23
push 0x42a878
push 0
push 3
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
mov eax, dword [ebp + 8]
push eax
call dword [edx + 0x4c0]
push eax
lea ecx, [ebp - 0x160]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
push eax
lea edx, [ebp - 0x178]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaLateIdCallLd]
add esp, 0x10
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaCastObjVar]
push eax
lea eax, [ebp - 0x164]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov dword [ebp - 0x22c], eax
mov dword [ebp - 0x180], 2
mov dword [ebp - 0x188], 2
lea ecx, [ebp - 0x168]
push ecx
lea edx, [ebp - 0x188]
push edx
mov eax, dword [ebp - 0x22c]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x22c]
push edx
call dword [ecx + 0x24]
fnclex
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0
jge 0x556aec
push 0x24
push 0x42a878
mov eax, dword [ebp - 0x22c]
push eax
mov ecx, dword [ebp - 0x230]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov dword [ebp - 0x384], eax
jmp 0x556af6
mov dword [ebp - 0x384], 0
mov edx, dword [ebp - 0x168]
mov dword [ebp - 0x234], edx
push 0xffffffffffffffff
mov eax, dword [ebp - 0x234]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x234]
push edx
call dword [ecx + 0x90]
fnclex
mov dword [ebp - 0x238], eax
cmp dword [ebp - 0x238], 0
jge 0x556b50
push 0x90
push 0x42a888
mov eax, dword [ebp - 0x234]
push eax
mov ecx, dword [ebp - 0x238]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov dword [ebp - 0x388], eax
jmp 0x556b5a
mov dword [ebp - 0x388], 0
lea edx, [ebp - 0x168]
push edx
lea eax, [ebp - 0x164]
push eax
lea ecx, [ebp - 0x160]
push ecx
push 3
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0x10
lea edx, [ebp - 0x188]
push edx
lea eax, [ebp - 0x178]
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeVarList]
add esp, 0xc
mov dword [ebp - 4], 0x25
movsx ecx, word [0x5ae910]
test ecx, ecx
je 0x556be8
mov dword [ebp - 4], 0x26
push 1
movsx edx, word [0x5ae92a]
push edx
push 1
push 8
lea eax, [ebp - 0x70]
push eax
push 4
push 0x180
call dword [sym.imp.MSVBVM60.DLL___vbaRedimPreserve]
add esp, 0x1c
mov dword [ebp - 4], 0x27
lea ecx, [ebp - 0x70]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov ecx, dword [ebp + 8]
push ecx
call dword [eax + 0x738]
mov dword [ebp - 4], 0x29
call 0x701334
add bh, al
inc ebp
cld
sub al, byte [eax]
add byte [eax], al
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov ecx, dword [ebp + 8]
push ecx
call dword [eax + 0x330]
push eax
lea edx, [ebp - 0x160]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov dword [ebp - 0x22c], eax
mov ax, word [0x5aecc8]
push eax
mov ecx, dword [ebp - 0x22c]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x22c]
push eax
call dword [edx + 0x74]
fnclex
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0
jge 0x556c6b
push 0x74
push 0x427254
mov ecx, dword [ebp - 0x22c]
push ecx
mov edx, dword [ebp - 0x230]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov dword [ebp - 0x38c], eax
jmp 0x556c75
mov dword [ebp - 0x38c], 0
lea ecx, [ebp - 0x160]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObj]
mov dword [ebp - 4], 0x2b
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov edx, dword [ebp + 8]
push edx
call dword [ecx + 0x358]
push eax
lea eax, [ebp - 0x160]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov dword [ebp - 0x22c], eax
mov cx, word [0x5aecc8]
push ecx
mov edx, dword [ebp - 0x22c]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x22c]
push ecx
call dword [eax + 0x74]
fnclex
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0
jge 0x556cf9
push 0x74
push 0x427254
mov edx, dword [ebp - 0x22c]
push edx
mov eax, dword [ebp - 0x230]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov dword [ebp - 0x390], eax
jmp fcn.00556d03
mov dword [ebp - 0x390], 0