Function at 0x46e730
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x828
mov eax, dword [0x677010]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
lea eax, [ebp - 0x80c]
push 0x104
mov ebx, edx
mov dword [ebp - 0x814], edi
mov esi, ecx
mov dword [ebp - 0x828], ebx
push eax
mov dword [ebp - 0x810], esi
mov dword [ebp - 0x818], 0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, 0x20
test eax, eax
je 0x46f442
xor eax, eax
lea ecx, [ebp - 0x40c]
mov word [ebp - 0x606], ax
lea edi, [ebp - 0x80c]
mov eax, ecx
mov edx, 0x200
sub edi, eax
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46e7c4
movzx eax, word [edi + ecx]
test ax, ax
je 0x46e7c4
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46e7a6
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
nop dword [eax]
cmp word [eax], 0
je 0x46e7ee
add eax, 2
sub ecx, 1
jne 0x46e7e0
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46e81e
push SysReAllocString
push str.ddraw.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46e91c
mov ecx, dword [ebp - 0x820]
mov eax, dword [ebp - 0x824]
cmp ecx, 0x40002
ja 0x46e854
jb 0x46e892
cmp eax, 0x5f
ja 0x46e854
jb 0x46e892
mov edx, dword [ebp - 0x810]
test edx, edx
je 0x46e864
mov dword [edx], 1
test ebx, ebx
je 0x46e86e
mov dword [ebx], 0
mov esi, dword [ebp - 0x814]
test esi, esi
je 0x46e886
mov edx, 0x20
mov word [esi], dx
mov edx, dword [ebp - 0x810]
mov dword [ebp - 0x818], 1
jmp 0x46e89e
mov esi, dword [ebp - 0x814]
mov edx, dword [ebp - 0x810]
cmp ecx, 0x40003
ja 0x46e8b1
jb 0x46e8e1
cmp eax, 0x448
ja 0x46e8b1
jb 0x46e8e1
test edx, edx
je 0x46e8bb
mov dword [edx], 2
test ebx, ebx
je 0x46e8c5
mov dword [ebx], 0
test esi, esi
je 0x46e8d7
mov edx, 0x20
mov word [esi], dx
mov edx, dword [ebp - 0x810]
mov dword [ebp - 0x818], 1
cmp ecx, 0x40004
ja 0x46e8f2
jb 0x46e91c
cmp eax, 0x44
ja 0x46e8f2
jb 0x46e91c
test edx, edx
je 0x46e8fc
mov dword [edx], 3
test ebx, ebx
je 0x46e906
mov dword [ebx], 0
test esi, esi
je 0x46e912
mov eax, 0x20
mov word [esi], ax
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop word [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46e94e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46e94e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46e930
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46e974
add eax, 2
sub ecx, 1
jne 0x46e966
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46e9a4
push SysReAllocString
push str.d3drg8x.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
mov ecx, 0x61
test eax, eax
js 0x46ea0b
mov eax, dword [ebp - 0x820]
cmp eax, 0x40004
ja 0x46e9da
jb 0x46ea0b
mov eax, dword [ebp - 0x824]
cmp eax, 0x46
ja 0x46e9da
jb 0x46ea0b
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46e9ea
mov dword [eax], 3
test ebx, ebx
je 0x46e9f4
mov dword [ebx], 0
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46ea01
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46ea34
movzx eax, word [ecx + edi]
test ax, ax
je 0x46ea34
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46ea16
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
nop dword [eax]
cmp word [eax], 0
je 0x46ea5e
add eax, 2
sub ecx, 1
jne 0x46ea50
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46ea8e
push SysReAllocString
push str.ddraw.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46eb90
mov ecx, dword [ebp - 0x820]
mov eax, dword [ebp - 0x824]
cmp ecx, 0x40005
ja 0x46eac6
jb 0x46eb04
cmp eax, 0x9b
ja 0x46eac6
jb 0x46eb04
mov edx, dword [ebp - 0x810]
test edx, edx
je 0x46ead6
mov dword [edx], 5
test ebx, ebx
je 0x46eae0
mov dword [ebx], 0
mov esi, dword [ebp - 0x814]
test esi, esi
je 0x46eaf8
mov edx, 0x20
mov word [esi], dx
mov edx, dword [ebp - 0x810]
mov dword [ebp - 0x818], 1
jmp 0x46eb10
mov esi, dword [ebp - 0x814]
mov edx, dword [ebp - 0x810]
cmp ecx, 0x40006
ja 0x46eb23
jb 0x46eb90
cmp eax, 0x13e
ja 0x46eb23
jb 0x46eb53
test edx, edx
je 0x46eb2d
mov dword [edx], 6
test ebx, ebx
je 0x46eb37
mov dword [ebx], 0
test esi, esi
je 0x46eb49
mov edx, 0x20
mov word [esi], dx
mov edx, dword [ebp - 0x810]
mov dword [ebp - 0x818], 1
cmp ecx, 0x40006
ja 0x46eb66
jb 0x46eb90
cmp eax, 0x1b4
ja 0x46eb66
jb 0x46eb90
test edx, edx
je 0x46eb70
mov dword [edx], 6
test ebx, ebx
je 0x46eb7a
mov dword [ebx], 1
test esi, esi
je 0x46eb86
mov eax, 0x20
mov word [esi], ax
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46ebbe
movzx eax, word [ecx + edi]
test ax, ax
je 0x46ebbe
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46eba0
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46ebe4
add eax, 2
sub ecx, 1
jne 0x46ebd6
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46ec14
push SysReAllocString
push str.dplayx.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46ec7d
mov eax, dword [ebp - 0x820]
cmp eax, 0x40006
ja 0x46ec47
jb 0x46ec7d
mov eax, dword [ebp - 0x824]
cmp eax, 0x30206
ja 0x46ec47
jb 0x46ec7d
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46ec57
mov dword [eax], 6
test ebx, ebx
je 0x46ec61
mov dword [ebx], 1
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46ec73
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46ecae
movzx eax, word [ecx + edi]
test ax, ax
je 0x46ecae
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46ec90
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46ecd4
add eax, 2
sub ecx, 1
jne 0x46ecc6
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46ed04
push SysReAllocString
push str.ddraw.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46ed6d
mov eax, dword [ebp - 0x820]
cmp eax, 0x40007
ja 0x46ed37
jb 0x46ed6d
mov eax, dword [ebp - 0x824]
cmp eax, 0x2bc
ja 0x46ed37
jb 0x46ed6d
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46ed47
mov dword [eax], 7
test ebx, ebx
je 0x46ed51
mov dword [ebx], 0
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46ed63
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46ed9e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46ed9e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46ed80
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46edc4
add eax, 2
sub ecx, 1
jne 0x46edb6
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46edf4
push SysReAllocString
push str.dinput.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46ee5d
mov eax, dword [ebp - 0x820]
cmp eax, 0x40007
ja 0x46ee27
jb 0x46ee5d
mov eax, dword [ebp - 0x824]
cmp eax, 0x2cc
ja 0x46ee27
jb 0x46ee5d
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46ee37
mov dword [eax], 7
test ebx, ebx
je 0x46ee41
mov dword [ebx], 0
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46ee53
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46ee8e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46ee8e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46ee70
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46eeb4
add eax, 2
sub ecx, 1
jne 0x46eea6
mov eax, 0x200
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46eee7
push SysReAllocString
push str.ddraw.dll
push ecx
mov edx, 0x200
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46ef89
mov esi, dword [ebp - 0x820]
mov edx, esi
mov ebx, dword [ebp - 0x824]
shr edx, 0x10
cmp dx, 4
jne 0x46ef2f
push 0x40008
push 0x190
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
jns 0x46ef4d
cmp dx, 5
jne 0x46ef89
push 0x50001
push 0x8d20190
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
js 0x46ef89
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46ef5d
mov dword [eax], 8
mov ebx, dword [ebp - 0x828]
test ebx, ebx
je 0x46ef6d
mov dword [ebx], 0
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46ef7f
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46efb2
movzx eax, word [ecx + edi]
test ax, ax
je 0x46efb2
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46ef94
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
nop word [eax + eax]
cmp word [eax], 0
je 0x46efde
add eax, 2
sub ecx, 1
jne 0x46efd0
mov eax, 0x200
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46f011
push SysReAllocString
push str.d3d8.dll
push ecx
mov edx, 0x200
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46f12d
mov esi, dword [ebp - 0x820]
mov edx, esi
mov ebx, dword [ebp - 0x824]
shr edx, 0x10
cmp dx, 4
jne 0x46f059
push 0x40008
push 0x10371
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
jns 0x46f077
cmp dx, 5
jne 0x46f0b3
push 0x50001
push 0xa280371
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
js 0x46f0b3
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46f087
mov dword [eax], 8
mov eax, dword [ebp - 0x828]
test eax, eax
je 0x46f097
mov dword [eax], 1
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46f0a9
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x818], 1
cmp dx, 4
jne 0x46f0d1
push 0x40008
push 0x10385
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
jns 0x46f0ef
cmp dx, 5
jne 0x46f12d
push 0x50001
push 0xa280385
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
js 0x46f12d
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46f0ff
mov dword [eax], 8
mov ebx, dword [ebp - 0x828]
test ebx, ebx
je 0x46f10f
mov dword [ebx], 1
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46f121
mov ecx, 0x61
mov word [eax], cx
mov dword [ebp - 0x818], 1
jmp 0x46f133
mov ebx, dword [ebp - 0x828]
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46f15e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46f15e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46f140
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46f184
add eax, 2
sub ecx, 1
jne 0x46f176
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46f1b4
push SysReAllocString
push str.mpg2splt.ax
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46f21d
mov eax, dword [ebp - 0x820]
cmp eax, 0x60003
ja 0x46f1e7
jb 0x46f21d
mov eax, dword [ebp - 0x824]
cmp eax, 0x10375
ja 0x46f1e7
jb 0x46f21d
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46f1f7
mov dword [eax], 8
test ebx, ebx
je 0x46f201
mov dword [ebx], 1
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46f213
mov ecx, 0x62
mov word [eax], cx
mov dword [ebp - 0x818], 1
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax + eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46f24e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46f24e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46f230
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46f274
add eax, 2
sub ecx, 1
jne 0x46f266
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46f2a4
push SysReAllocString
push str.dpnet.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46f348
mov esi, dword [ebp - 0x820]
mov edx, esi
mov ebx, dword [ebp - 0x824]
shr edx, 0x10
cmp dx, 4
jne 0x46f2ec
push 0x40009
push 0x86
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
jns 0x46f30a
cmp dx, 5
jne 0x46f348
push 0x50002
push 0xe5d0086
push esi
push ebx
call fcn.0046f530
add esp, 0x10
test eax, eax
js 0x46f348
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46f31a
mov dword [eax], 8
mov ebx, dword [ebp - 0x828]
test ebx, ebx
je 0x46f32a
mov dword [ebx], 2
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46f33c
mov ecx, 0x20
mov word [eax], cx
mov dword [ebp - 0x818], 1
jmp 0x46f34e
mov ebx, dword [ebp - 0x828]
mov edx, 0x200
lea ecx, [ebp - 0x40c]
nop dword [eax]
lea eax, [edx + 0x7ffffdfe]
test eax, eax
je 0x46f37e
movzx eax, word [ecx + edi]
test ax, ax
je 0x46f37e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x46f360
lea eax, [ecx - 2]
test edx, edx
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x200
lea eax, [ebp - 0x40c]
cmp word [eax], 0
je 0x46f3a4
add eax, 2
sub ecx, 1
jne 0x46f396
mov edx, 0x200
mov esi, ecx
mov eax, edx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x46f3d4
push SysReAllocString
push str.d3d9.dll
push ecx
lea ecx, [ebp - 0x40c]
sub edx, esi
lea ecx, [ecx + esi*2]
call fcn.00433420
lea edx, [ebp - 0x824]
lea ecx, [ebp - 0x40c]
call fcn.0046f470
test eax, eax
js 0x46f428
mov eax, dword [ebp - 0x810]
test eax, eax
je 0x46f3f9
mov dword [eax], 9
test ebx, ebx
je 0x46f403
mov dword [ebx], 0
mov eax, dword [ebp - 0x814]
test eax, eax
je 0x46f45d
mov ecx, 0x20
mov word [eax], cx
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005bc745
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x818], 0
jne 0x46f45d
mov esi, dword [ebp - 0x810]
mov ecx, 0x20
mov edi, dword [ebp - 0x814]
test esi, esi
je 0x46f44c
mov dword [esi], 0
test ebx, ebx
je 0x46f456
mov dword [ebx], 0
test edi, edi
je 0x46f45d
mov word [edi], cx
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005bc745
mov esp, ebp
pop ebp
ret