Function at 0x40cb30
Capabilities:
Reference sql statements

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push 0x401296
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x8c
push ebx
push esi
push edi
mov dword [ebp - 0x14], esp
mov dword [ebp - 0x10], 0x4011f0
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], 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 - 0x54], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x84], eax
mov edx, dword [ebp + 0x14]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVBVM60.DLL___vbaStrCopy]
push 1
call dword [sym.imp.MSVBVM60.DLL___vbaOnError]
push 0x402258
call dword [sym.imp.MSVBVM60.DLL___vbaNew]
push eax
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov ecx, dword [ebp - 0x28]
mov ebx, dword [ecx]
push 0x402280
push 0x4022c8
mov edi, dword [sym.imp.MSVBVM60.DLL___vbaStrCat]
call edi
mov edx, eax
lea ecx, [ebp - 0x30]
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaStrMove]
call esi
push eax
mov edx, dword [0x40e024]
push edx
call edi
mov edx, eax
lea ecx, [ebp - 0x34]
call esi
push eax
push 0x4022e8
call edi
mov edx, eax
lea ecx, [ebp - 0x38]
call esi
push eax
push 0x402328
call edi
mov edx, eax
lea ecx, [ebp - 0x3c]
call esi
push eax
push 0x402330
call edi
mov edx, eax
lea ecx, [ebp - 0x40]
call esi
push eax
push 0x402328
call edi
mov edx, eax
lea ecx, [ebp - 0x44]
call esi
push eax
push 0x40236c
call edi
mov edx, eax
lea ecx, [ebp - 0x48]
call esi
push eax
push 0x401a64
call edi
mov edx, eax
lea ecx, [ebp - 0x4c]
call esi
push eax
push 0x402328
call edi
mov edx, eax
lea ecx, [ebp - 0x50]
call esi
push eax
mov eax, dword [ebp - 0x28]
push eax
call dword [ebx + 0x24]
fnclex
test eax, eax
jge 0x40cc8f
push 0x24
push 0x4023a8
mov ecx, dword [ebp - 0x28]
push ecx
push eax
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
call ebx
jmp 0x40cc95
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
lea edx, [ebp - 0x50]
push edx
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp - 0x48]
push ecx
lea edx, [ebp - 0x44]
push edx
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x3c]
push ecx
lea edx, [ebp - 0x38]
push edx
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x30]
push ecx
push 9
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
add esp, 0x28
mov eax, dword [ebp - 0x28]
mov edx, dword [eax]
push 0x10
push eax
call dword [edx + 0x7c]
fnclex
test eax, eax
jge 0x40cce3
push 0x7c
push 0x4023a8
mov ecx, dword [ebp - 0x28]
push ecx
push eax
call ebx
mov eax, dword [ebp - 0x28]
mov edx, dword [eax]
push 0xffffffffffffffff
push 0x401b90
push 0x401b90
push 0x401b90
push eax
call dword [edx + 0x50]
fnclex
test eax, eax
jge 0x40cd11
push 0x50
push 0x4023a8
mov ecx, dword [ebp - 0x28]
push ecx
push eax
call ebx
push 0x4023d8
call dword [sym.imp.MSVBVM60.DLL___vbaNew]
push eax
lea edx, [ebp - 0x20]
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
push 0x4023f0
mov eax, dword [ebp + 8]
push eax
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaStrI2]
call ebx
mov edx, eax
lea ecx, [ebp - 0x30]
call esi
push eax
call edi
mov edx, eax
lea ecx, [ebp - 0x34]
call esi
push eax
push 0x402450
call edi
mov edx, eax
lea ecx, [ebp - 0x38]
call esi
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call ebx
mov edx, eax
lea ecx, [ebp - 0x3c]
call esi
push eax
call edi
mov edx, eax
lea ecx, [ebp - 0x40]
call esi
push eax
push 0x402478
call edi
mov edx, eax
lea ecx, [ebp - 0x44]
call esi
push eax
mov edx, dword [ebp + 0x10]
push edx
call ebx
mov edx, eax
lea ecx, [ebp - 0x48]
call esi
push eax
call edi
mov edx, eax
lea ecx, [ebp - 0x24]
call esi
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x44]
push ecx
lea edx, [ebp - 0x40]
push edx
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x38]
push ecx
lea edx, [ebp - 0x34]
push edx
lea eax, [ebp - 0x30]
push eax
push 7
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStrList]
add esp, 0x20
mov eax, dword [ebp - 0x28]
mov ecx, 9
mov edx, dword [ebp - 0x24]
mov esi, 8
mov edi, dword [ebp - 0x20]
mov edi, dword [edi]
push 0xffffffffffffffff
push 3
push 2
sub esp, 0x10
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebx + 0xc], eax
sub esp, 0x10
mov ecx, esp
mov dword [ecx], esi
mov eax, dword [ebp - 0x64]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov edx, dword [ebp - 0x5c]
mov dword [ecx + 0xc], edx
mov eax, dword [ebp - 0x20]
push eax
call dword [edi + 0xa0]
fnclex
test eax, eax
jge 0x40ce2e
push 0xa0
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
call esi
jmp 0x40ce34
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
lea ecx, [ebp - 0x7c]
push ecx
push eax
call dword [edx + 0x34]
fnclex
test eax, eax
jge 0x40ce55
push 0x34
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [ebp - 0x80]
push edx
push eax
call dword [ecx + 0x50]
fnclex
test eax, eax
jge 0x40ce76
push 0x50
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
call esi
xor edx, edx
cmp word [ebp - 0x80], dx
sete dl
xor eax, eax
cmp word [ebp - 0x7c], ax
sete al
or edx, eax
jne 0x40d2bb
mov eax, 0x80020004
mov dword [ebp - 0x70], eax
mov ecx, 0xa
mov edx, eax
mov esi, ecx
mov edi, dword [ebp - 0x20]
mov edi, dword [edi]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebx + 0xc], eax
sub esp, 0x10
mov ecx, esp
mov dword [ecx], esi
mov eax, dword [ebp - 0x64]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov edx, dword [ebp - 0x5c]
mov dword [ecx + 0xc], edx
mov eax, dword [ebp - 0x20]
push eax
call dword [edi + 0x78]
fnclex
test eax, eax
jge 0x40cef5
push 0x78
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
call esi
jmp 0x40cefb
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
lea ecx, [ebp - 0x54]
push ecx
push eax
call dword [edx + 0x54]
fnclex
test eax, eax
jge 0x40cf1c
push 0x54
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x8c], eax
mov ecx, 0x4024b0
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40cf66
push 0x28
push 0x4024c8
mov edx, dword [ebp - 0x8c]
push edx
push eax
call esi
mov eax, dword [ebp - 0x58]
mov edi, eax
mov cx, word [ebp + 8]
mov word [ebp - 0x70], cx
mov ecx, 2
mov edx, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp - 0x70]
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edx + 0x38]
fnclex
test eax, eax
jge 0x40cfa8
push 0x38
push 0x4024d8
push edi
push eax
call esi
lea edx, [ebp - 0x58]
push edx
lea eax, [ebp - 0x54]
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [ebp - 0x54]
push edx
push eax
call dword [ecx + 0x54]
fnclex
test eax, eax
jge 0x40cfdc
push 0x54
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x8c], eax
mov ecx, 0x4024ec
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40d026
push 0x28
push 0x4024c8
mov edx, dword [ebp - 0x8c]
push edx
push eax
call esi
mov eax, dword [ebp - 0x58]
mov edi, eax
mov cx, word [ebp + 0xc]
mov word [ebp - 0x70], cx
mov ecx, 2
mov edx, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp - 0x70]
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edx + 0x38]
fnclex
test eax, eax
jge 0x40d068
push 0x38
push 0x4024d8
push edi
push eax
call esi
lea edx, [ebp - 0x58]
push edx
lea eax, [ebp - 0x54]
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [ebp - 0x54]
push edx
push eax
call dword [ecx + 0x54]
fnclex
test eax, eax
jge 0x40d09c
push 0x54
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x8c], eax
mov ecx, 0x402508
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40d0e6
push 0x28
push 0x4024c8
mov edx, dword [ebp - 0x8c]
push edx
push eax
call esi
mov eax, dword [ebp - 0x58]
mov edi, eax
mov cx, word [ebp + 0x10]
mov word [ebp - 0x70], cx
mov ecx, 2
mov edx, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp - 0x70]
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edx + 0x38]
fnclex
test eax, eax
jge 0x40d128
push 0x38
push 0x4024d8
push edi
push eax
call esi
lea edx, [ebp - 0x58]
push edx
lea eax, [ebp - 0x54]
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [ebp - 0x54]
push edx
push eax
call dword [ecx + 0x54]
fnclex
test eax, eax
jge 0x40d15c
push 0x54
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x8c], eax
mov ecx, 0x40252c
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40d1a6
push 0x28
push 0x4024c8
mov edx, dword [ebp - 0x8c]
push edx
push eax
call esi
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x94], eax
mov ecx, 0x402524
mov edx, 8
mov edi, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x74]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x38]
fnclex
test eax, eax
jge 0x40d1ec
push 0x38
push 0x4024d8
mov edx, dword [ebp - 0x94]
push edx
push eax
call esi
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x54]
push ecx
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
lea ecx, [ebp - 0x54]
push ecx
push eax
call dword [edx + 0x54]
fnclex
test eax, eax
jge 0x40d220
push 0x54
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x8c], eax
mov ecx, 0x402548
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40d26a
push 0x28
push 0x4024c8
mov edx, dword [ebp - 0x8c]
push edx
push eax
call esi
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x94], eax
mov ecx, dword [ebp - 0x2c]
mov edx, 8
mov edi, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x74]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x38]
fnclex
test eax, eax
jge 0x40d2ae
push 0x38
push 0x4024d8
mov edx, dword [ebp - 0x94]
push edx
push eax
call esi
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x54]
push ecx
jmp 0x40d366
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
lea ecx, [ebp - 0x54]
push ecx
push eax
call dword [edx + 0x54]
fnclex
test eax, eax
jge 0x40d2dc
push 0x54
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
mov eax, dword [ebp - 0x54]
mov esi, eax
mov ecx, 0x402548
mov edx, 8
mov edi, dword [eax]
lea ebx, [ebp - 0x58]
push ebx
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x64]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x5c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x28]
fnclex
test eax, eax
jge 0x40d320
push 0x28
push 0x4024c8
push esi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov eax, dword [ebp - 0x58]
mov esi, eax
mov ecx, dword [ebp - 0x2c]
mov edx, 8
mov edi, dword [eax]
sub esp, 0x10
mov ebx, esp
mov dword [ebx], edx
mov edx, dword [ebp - 0x74]
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
mov ecx, dword [ebp - 0x6c]
mov dword [ebx + 0xc], ecx
push eax
call dword [edi + 0x38]
fnclex
test eax, eax
jge 0x40d35e
push 0x38
push 0x4024d8
push esi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
lea edx, [ebp - 0x58]
push edx
lea eax, [ebp - 0x54]
push eax
push 2
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
mov eax, 0x80020004
mov ecx, 0xa
mov edx, eax
mov esi, ecx
mov edi, dword [ebp - 0x20]
mov edi, dword [edi]
push ecx
mov ebx, esp
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x74]
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebx + 0xc], eax
sub esp, 0x10
mov ecx, esp
mov dword [ecx], esi
mov eax, dword [ebp - 0x64]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov edx, dword [ebp - 0x5c]
mov dword [ecx + 0xc], edx
mov eax, dword [ebp - 0x20]
push eax
call dword [edi + 0xac]
fnclex
test eax, eax
jge 0x40d3d4
push 0xac
push 0x40249c
mov ecx, dword [ebp - 0x20]
push ecx
push eax
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
call esi
jmp 0x40d3da
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
lea ecx, [ebp - 0x84]
push ecx
push eax
call dword [edx + 0xdc]
fnclex
test eax, eax
jge 0x40d404
push 0xdc
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x40d431
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x80]
fnclex
test eax, eax
jge 0x40d431
push 0x80
push 0x40249c
mov edx, dword [ebp - 0x20]
push edx
push eax
call esi
push 0x4023c8
push 0
mov edi, dword [sym.imp.MSVBVM60.DLL___vbaCastObj]
call edi
push eax
lea eax, [ebp - 0x20]
push eax
mov ebx, dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
call ebx
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax]
lea edx, [ebp - 0x84]
push edx
push eax
call dword [ecx + 0x88]
fnclex
test eax, eax
jge 0x40d477
push 0x88
push 0x4023a8
mov ecx, dword [ebp - 0x28]
push ecx
push eax
call esi
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x40d49e
mov eax, dword [ebp - 0x28]
mov edx, dword [eax]
push eax
call dword [edx + 0x3c]
fnclex
test eax, eax
jge 0x40d49e
push 0x3c
push 0x4023a8
mov ecx, dword [ebp - 0x28]
push ecx
push eax
call esi
push 0x402248
push 0
call edi
push eax
lea edx, [ebp - 0x28]
push edx
call ebx
call dword [sym.imp.MSVBVM60.DLL___vbaExitProc]
push 0x40d531
jmp 0x40d510
lea ecx, [ebp - 0x20]
mov esi, dword [sym.imp.MSVBVM60.DLL___vbaFreeObj]
call esi
lea ecx, [ebp - 0x24]
mov edi, dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
call edi
lea ecx, [ebp - 0x28]
call esi
lea ecx, [ebp - 0x2c]
call edi
ret