Function at 0x4711f2
Capabilities:
Get common file path
Get comspec environment variable
Get hostname
Get keyboard layout
Get program files directory
Get session user name
Get startup folder
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x534
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
xor eax, eax
push 0x208
push eax
lea ecx, [ebp - 0x26e]
push ecx
mov word [ebp - 0x270], ax
call fcn.004130e0
add esp, 0xc
xor edx, edx
push 0x208
push edx
lea eax, [ebp - 0x52e]
push eax
mov word [ebp - 0x530], dx
call fcn.004130e0
mov ecx, dword [ebp + 0x10]
add esp, 0xc
xor edi, edi
mov dword [ebp - 4], ecx
jmp 0x471252
mov edx, dword [ebp - 4]
mov eax, dword [edi*4 + 0x491770]
push edx
push eax
call fcn.004132dc
add esp, 8
test eax, eax
je 0x471270
inc edi
cmp edi, 0x60
jl 0x471252
cmp edi, 0x60
jne 0x4712e8
mov edi, 0x48b188
lea esi, [ebp - 0x20]
call fcn.00401c30
lea ecx, [ebp + 0x10]
push ecx
mov eax, esi
mov dword [ebp + 0xc], 0
call fcn.0040bff0
lea edx, [ebp + 0xc]
push edx
lea eax, [ebp - 4]
push eax
xor ecx, ecx
call fcn.0040c560
mov eax, dword [ebp - 4]
test eax, eax
jne 0x4712c7
mov ecx, esi
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push eax
call fcn.00409120
lea ecx, [ebp - 0x20]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp edi, 0x5f
ja case.0x4712f1.87
jmp dword [edi*4 + 0x471ec2]
mov eax, 0x48b1e4
call fcn.0040e8e0
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, 0x484754
call fcn.0040e8e0
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, 0x486e80
call fcn.0040e8e0
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, 0x48b1e8
call fcn.0040e8e0
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
lea eax, [edx + esi + 4]
call fcn.00403f70
mov edi, dword [eax + 0x14]
mov esi, ebx
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
mov eax, dword [esi]
mov ecx, dword [eax + 4]
lea eax, [ecx + esi + 4]
call fcn.00403f70
add eax, 0x20
push eax
call fcn.00409120
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
lea edx, [ebp - 0x10]
push edx
call dword [sym.imp.KERNEL32.DLL_GetLocalTime]
movzx eax, word [ebp - 2]
push eax
push 0x48b1ec
lea ecx, [ebp - 0x270]
push ecx
call fcn.0041343b
add esp, 0xc
lea eax, [ebp - 0x270]
call fcn.0040e8e0
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x48b1f8
lea edx, [ebp - 0x280]
push edx
lea eax, [ebp - 0x2a8]
push eax
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x280]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x48b200
lea ecx, [ebp - 0x300]
push ecx
lea edx, [ebp - 0x2f0]
push edx
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x300]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x48b208
lea eax, [ebp - 0x2d8]
push eax
lea ecx, [ebp - 0x2c0]
push ecx
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x2d8]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x485184
lea edx, [ebp - 0x290]
push edx
lea eax, [ebp - 0x2c8]
push eax
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x290]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x48b210
lea ecx, [ebp - 0x2a0]
push ecx
lea edx, [ebp - 0x308]
push edx
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x2a0]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x48b218
lea eax, [ebp - 0x2b8]
push eax
lea ecx, [ebp - 0x2e8]
push ecx
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x2b8]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
lea edx, [ebp - 0x2e0]
push edx
call fcn.00441b3c
push eax
call fcn.004516e9
push eax
push 0x485184
lea eax, [ebp - 0x270]
push eax
jmp 0x4713d0
push 0x48b220
lea ecx, [ebp - 0x40]
push ecx
lea edx, [ebp - 0x18]
push edx
call fcn.00441b3c
push eax
call fcn.00451678
mov edi, eax
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp - 0x40]
call fcn.00402260
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 0x26
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp - 0x270]
push ecx
push 0
push 0
push 0x2b
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0
push 0
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp - 0x270]
push ecx
push 0
push 0
push 0x19
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0
push 0
push 0x2e
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 0x1f
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp - 0x270]
push ecx
push 0
push 0
push 0x17
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0
push 0
push 0x16
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 0x18
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp - 0x270]
push ecx
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0
push 0
push 0x10
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 6
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp - 0x270]
push ecx
push 0
push 0
push 2
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0
push 0
push 0xb
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea eax, [ebp - 0x270]
push eax
push 0
push 0
push 7
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x4713d8
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0x270]
push edx
mov dword [ebp + 8], 0x104
call dword [sym.imp.KERNEL32.DLL_GetComputerNameW]
jmp 0x4713d8
push 0x104
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.DLL_GetWindowsDirectoryW]
test eax, eax
je case.0x4712f1.87
jmp 0x4713d8
mov ecx, dword [0x4a9604]
cmp byte [ecx + 0x2a], 0
push 0x104
lea edx, [ebp - 0x270]
push edx
je 0x471809
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], eax
lea eax, [ebp - 0xc]
push eax
call fcn.00431336
call eax
lea ecx, [ebp - 0xc]
push ecx
call fcn.00431858
jmp 0x4713d8
call dword [sym.imp.KERNEL32.DLL_GetSystemDirectoryW]
jmp 0x4713d8
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 6
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 3
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 9
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 5
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 0xa
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 2
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 7
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 8
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 4
jmp 0x471ea7
cmp byte [0x4974ea], 1
mov esi, ebx
jne 0x471e9c
call fcn.004091e0
mov dword [ebx], 1
jmp 0x471ea7
cmp byte [0x4a8719], 1
jmp 0x4718bd
mov esi, ebx
call fcn.004091e0
mov dword [ebx], pe_nt_image_headers32
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 0x41
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 0x42
jmp 0x471ea7
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 0x43
jmp 0x471ea7
mov eax, dword [esi + 0xc8]
jmp 0x4713de
mov eax, dword [esi + 0xb8]
jmp 0x4713de
mov eax, dword [esi + 0xd8]
jmp 0x4713de
mov eax, dword [esi + 0xf4]
push eax
call fcn.00434e8d
mov esi, ebx
mov edi, eax
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
lea ecx, [ebp - 0x270]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryW]
jmp 0x4713d8
mov edx, dword [0x4a9604]
movzx eax, word [edx + 0x2c]
test eax, eax
je 0x4719aa
cmp eax, 6
je 0x4719a0
cmp eax, 9
jne 0x471a74
mov eax, 0x48b23c
jmp 0x4713de
mov eax, str.IA64
jmp 0x4713de
mov eax, 0x48b228
jmp 0x4713de
xor ecx, ecx
mov eax, reloc.WSOCK32.dll_accept
cpuid
lea esi, [ebp - 0x40]
mov dword [esi], eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
test dword [ebp - 0x34], 0x20000000
mov eax, 0x48b23c
jne 0x4719de
mov eax, 0x48b228
mov ebx, dword [ebp + 0xc]
jmp 0x4713de
mov eax, str.WIN32_NT
jmp 0x4713de
mov eax, dword [0x4a9604]
cmp byte [eax + 0x28], 1
jne 0x471a05
mov eax, str.WIN_2008R2
jmp 0x4713de
cmp byte [eax + 0x26], 1
jne 0x471a15
mov eax, str.WIN_7
jmp 0x4713de
cmp byte [eax + 0x24], 1
jne 0x471a25
mov eax, str.WIN_2008
jmp 0x4713de
cmp byte [eax + 0x22], 1
jne 0x471a35
mov eax, str.WIN_VISTA
jmp 0x4713de
cmp byte [eax + 0x20], 1
jne 0x471a45
mov eax, str.WIN_2003
jmp 0x4713de
cmp byte [eax + 0x1e], 1
jne 0x471a64
cmp byte [eax + 0x2e], 0
mov eax, str.WIN_XPe
jne 0x4713de
mov eax, str.WIN_XP
jmp 0x4713de
cmp byte [eax + 0x1c], 1
jne 0x471a74
mov eax, str.WIN_2000
jmp 0x4713de
mov eax, str.UNKNOWN
jmp 0x4713de
mov eax, dword [0x4a9604]
mov edi, dword [eax + 8]
mov esi, ebx
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
mov edi, dword [0x4a9604]
add edi, 0xc
mov esi, ebx
call fcn.0040e870
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x104
push str.InstallLanguage
push reloc.OLEAUT32.dll_SysReAllocString
lea esi, [ebp - 0x270]
mov edx, str.SYSTEMCurrentControlSetControlNlsLanguage
call fcn.0040f3e0
jmp 0x4713d5
push 0x104
push str.SchemeLangID
push reloc.WSOCK32.dll_accept
lea esi, [ebp - 0x270]
mov edx, str.Control_PanelAppearance
call fcn.0040f3e0
movzx eax, word [ebp - 0x270]
add esp, 0xc
push 4
push esi
push eax
mov dword [ebp + 8], eax
call fcn.0043343c
jmp 0x4713d5
lea edx, [ebp - 0x31c]
push edx
call dword [sym.imp.USER32.dll_GetKeyboardLayoutNameW]
lea eax, [ebp - 0x31c]
jmp 0x4713de
lea eax, [ebp - 0x530]
push str.3__3__7__15
push eax
call fcn.00411707
lea ecx, [ebp - 0x530]
push ecx
xor esi, esi
xor edi, edi
call fcn.00411361
add esp, 0xc
test eax, eax
jle 0x471b93
movzx eax, word [ebp + edi*2 - 0x530]
cmp eax, 0x20
je 0x471b7f
cmp eax, 0x2c
jne 0x471b76
mov edx, 0x2e
mov word [ebp + esi*2 - 0x530], dx
jmp 0x471b7e
mov word [ebp + esi*2 - 0x530], ax
inc esi
lea eax, [ebp - 0x530]
push eax
inc edi
call fcn.00411361
add esp, 4
cmp edi, eax
jl 0x471b55
xor ecx, ecx
mov word [ebp + esi*2 - 0x530], cx
lea eax, [ebp - 0x530]
jmp 0x4713de
push 0x104
lea edx, [ebp - 0x270]
push edx
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameW]
jmp 0x4713d8
lea eax, [ebp - 0x60]
push eax
push 1
call fcn.00433a3c
add esp, 8
lea eax, [ebp - 0x60]
jmp 0x4713de
lea ecx, [ebp - 0x60]
push ecx
push 2
call fcn.00433a3c
add esp, 8
lea eax, [ebp - 0x60]
jmp 0x4713de
lea edx, [ebp - 0x60]
push edx
push 3
call fcn.00433a3c
add esp, 8
lea eax, [ebp - 0x60]
jmp 0x4713de
lea eax, [ebp - 0x60]
push eax
push 4
call fcn.00433a3c
add esp, 8
lea eax, [ebp - 0x60]
jmp 0x4713de
lea ecx, [ebp - 0x30]
push ecx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edi, dword [ebp - 0x28]
mov esi, ebx
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edi, dword [ebp - 0x24]
mov esi, ebx
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov edi, eax
push edi
call dword [sym.imp.USER32.dll_GetDC]
push 0xc
push eax
mov dword [ebp + 0xc], eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, ebx
mov dword [ebp - 4], eax
call fcn.004091e0
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
push ecx
push edi
mov dword [ebx + 8], 1
mov dword [ebx], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov edi, eax
push edi
call dword [sym.imp.USER32.dll_GetDC]
push 0x74
push eax
mov dword [ebp + 0xc], eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, ebx
mov dword [ebp - 4], eax
call fcn.004091e0
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
push eax
push edi
mov dword [ebx + 8], 1
mov dword [ebx], edx
call dword [sym.imp.USER32.dll_ReleaseDC]
lea ecx, [ebp + 0x10]
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x104
lea ecx, [ebp - 0x270]
push ecx
push str.COMSPEC
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
lea edx, [ebp - 0x270]
push edx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
lea esi, [ebp - 0x270]
call fcn.00410460
jmp 0x4713d8
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x270]
push ecx
mov dword [ebp + 8], 0x104
call dword [sym.imp.ADVAPI32.dll_GetUserNameW]
jmp 0x4713d8
mov eax, dword [0x4a7f54]
cmp eax, 3
je case.0x4712f1.43
cmp eax, 4
jne case.0x4712f1.30
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 1
jmp 0x471ea7
push 0x104
lea edx, [ebp - 0x270]
push edx
push str.USERPROFILE
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea eax, [ebp - 0x270]
push eax
push str.HOMEDRIVE
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea ecx, [ebp - 0x270]
push ecx
push str.HOMEPATH
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea edx, [ebp - 0x270]
push edx
push str.HOMESHARE
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea eax, [ebp - 0x270]
push eax
push str.LOGONSERVER
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea ecx, [ebp - 0x270]
push ecx
push str.USERDOMAIN
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
push 0x104
lea edx, [ebp - 0x270]
push edx
push str.USERDNSDOMAIN
call dword [sym.imp.KERNEL32.DLL_GetEnvironmentVariableW]
jmp 0x4713d8
mov edi, dword [esi + 0x148]
mov esi, ebx
call fcn.004091e0
mov dword [ebx], edi
jmp 0x471ea7
mov eax, dword [esi + 0x14c]
jmp 0x4713de
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
mov dword [ebp + 0xc], eax
fild dword [ebp + 0xc]
test eax, eax
jns 0x471e71
fadd qword [0x48bd70]
mov esi, ebx
fstp qword [ebp - 8]
call fcn.004091e0
fld qword [ebp - 8]
lea ecx, [ebp + 0x10]
fstp qword [ebx]
mov dword [ebx + 8], 3
call fcn.00402260
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov esi, ebx
call fcn.004091e0
mov dword [ebx], 0
mov dword [ebx + 8], 1
lea ecx, [ebp + 0x10]
call fcn.00402260
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18