Function at 0x105464e0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x6c
push ebx
mov ebx, dword [esp + 0x84]
mov edx, 1
push ebp
mov ebp, dword [esp + 0x84]
push esi
push edi
mov edi, dword [esp + 0x80]
mov eax, dword [edi + 0x5c]
mov esi, dword [edi + 4]
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0xc0]
mov dword [esp + 0x80], eax
mov eax, dword [edi + 0xcc]
mov ecx, eax
neg ecx
mov dword [esp + 0x10], esi
sbb ecx, ecx
add eax, 2
add ecx, eax
mov eax, dword [edi + 8]
mov dword [esp + 0x3c], eax
mov eax, ebp
sub eax, esi
mov dword [esp + 0x58], ecx
mov ecx, dword [edi + 0xb8]
add eax, ebx
shl edx, cl
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x28], eax
sub eax, ecx
sub dword [esp + 0x28], edx
cmp eax, edx
mov edx, dword [esp + 0x28]
cmovbe edx, ecx
cmp dword [edi + 0x18], 0
cmovne edx, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], edx
lea eax, [edx + ecx]
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0xc]
cmp eax, edx
cmovb eax, edx
add ecx, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x4c], ecx
lea ecx, [ebx + ebp]
mov dword [esp + 0x1c], ecx
add ecx, 0xfffffff8
lea edx, [eax + esi]
mov dword [esp + 0x44], ecx
mov esi, ebp
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x88]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
cmp eax, dword [esp + 0x28]
jne 0x105466e7
mov eax, dword [edi + 0xc8]
add eax, 0xfffffffc
cmp dword [edi + 0xcc], 1
jbe 0x10546657
cmp eax, 3
ja case.0x105465cc.0
jmp dword [eax*4 + 0x10547044]
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10548540
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10549390
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.1054a1e0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10547780
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
cmp eax, 3
ja case.0x1054665c.0
jmp dword [eax*4 + 0x10547054]
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10547e30
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10548c80
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.10549ad0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
push ebx
push ebp
push dword [esp + 0x90]
push dword [esp + 0x90]
push edi
call fcn.105470f0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret
mov edi, esi
xor ebp, ebp
mov eax, edi
mov ebx, edx
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x10]
cmp edx, eax
cmovb ebx, ebp
mov dword [esp + 0x68], ebx
sbb ebx, ebx
and ebx, edx
cmp ecx, eax
mov edx, ecx
cmovb edx, ebp
mov ebp, dword [esp + 0x58]
sbb eax, eax
mov dword [esp + 0x78], edx
and eax, ecx
lea edx, [edi + 1]
add ebp, edi
mov dword [esp + 0x18], eax
lea eax, [edi + 0x80]
mov dword [esp + 0x24], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x5c], ebp
lea eax, [ebp + 1]
mov dword [esp + 0x30], eax
cmp eax, dword [esp + 0x44]
jae 0x10547008
mov eax, dword [esp + 0x80]
mov edi, 0x40
mov dword [esp + 0x40], ebx
sub edi, eax
mov ebx, dword [esp + 0x94]
mov ecx, 0x20
sub ecx, eax
mov dword [esp + 0x80], edi
mov eax, dword [esp + 0x18]
add ebx, 0xfffffffc
mov dword [esp + 0x90], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], eax
cmp ebx, 4
ja case.0x10546785.0
jmp dword [ebx*4 + 0x10547064]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 4]
push dword [esi]
call fcn.10511b50
mov ecx, edi
call fcn.10512520
mov edx, dword [esp + 0x24]
mov edi, eax
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x38], edi
jmp switch.0x105467f3
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x10546796
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x10546796
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x10546796
imul edi, dword [esi], 0x9e3779b1
shr edi, cl
mov dword [esp + 0x38], edi
cmp ebx, 4
ja case.0x105467f3.0
jmp dword [ebx*4 + 0x10547078]
push 0xcf1bbcdc
push 0xbb000000
push dword [edx + 4]
push dword [edx]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ebx, eax
jmp 0x10546892
push 0xcf1bbcdc
push 0xbf9b0000
push dword [edx + 4]
push dword [edx]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ebx, eax
jmp 0x10546892
push 0xcf1bbcdc
push 0xbfa56300
push dword [edx + 4]
push dword [edx]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ebx, eax
jmp 0x10546892
push 0xcf1bbcdc
push 0xb7a56463
push dword [edx + 4]
push dword [edx]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ebx, eax
jmp 0x10546892
imul ebx, dword [edx], 0x9e3779b1
shr ebx, cl
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov edi, dword [eax + edi*4]
mov eax, edx
cmp edi, dword [esp + 0x2c]
cmovb eax, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x64], eax
xor eax, eax
cmp eax, dword [esp + 0x18]
sbb eax, eax
neg eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x2c]
mov ecx, ebp
sub ecx, dword [esp + 0x18]
sub ecx, edx
cmp ecx, dword [esp + 0x2c]
mov dword [esp + 0x70], ecx
cmovb edx, dword [esp + 0x3c]
sub eax, ecx
add edx, ecx
cmp eax, 4
sbb eax, eax
inc eax
test dword [esp + 0x6c], eax
je 0x105468ef
mov eax, dword [edx]
jmp 0x105468f5
mov eax, dword [ebp]
xor eax, 1
mov ebp, dword [esp + 0x38]
mov ecx, esi
sub ecx, dword [esp + 0x10]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x48], ecx
mov dword [eax + ebp*4], ecx
mov ebp, dword [esp + 0x5c]
mov ecx, dword [ebp]
cmp ecx, dword [esp + 0x60]
mov ecx, dword [esp + 0x70]
je 0x10546b51
mov ecx, dword [esp + 0x20]
cmp edi, dword [esp + 0x28]
jb 0x10546932
mov eax, dword [ecx + edi]
jmp 0x10546937
mov eax, dword [esi]
xor eax, 1
cmp dword [esi], eax
je 0x10546acb
mov eax, dword [esp + 0x34]
mov edi, dword [eax + ebx*4]
lea ecx, [eax + ebx*4]
cmp edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
cmovb edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x20], edx
cmp eax, 4
ja case.0x10546967.0
jmp dword [eax*4 + 0x1054708c]
push 0xcf1bbcdc
push 0xbb000000
push dword [ebp + 4]
push dword [ebp]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, dword [esp + 0x20]
mov ebx, eax
jmp 0x105469cb
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x10546978
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x10546978
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x10546978
imul ebx, dword [ebp], 0x9e3779b1
mov ecx, dword [esp + 0x90]
shr ebx, cl
mov esi, dword [esp + 0x24]
mov ecx, esi
mov eax, dword [esp + 0x70]
sub ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x48], ecx
mov dword [eax], ecx
cmp edi, dword [esp + 0x28]
jb 0x105469ee
mov eax, dword [edx + edi]
jmp 0x105469f3
mov eax, dword [esi]
xor eax, 1
cmp dword [esi], eax
je 0x10546ac7
mov eax, dword [esp + 0x34]
mov dword [esp + 0x38], ebx
mov edi, dword [eax + ebx*4]
cmp edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
cmovb eax, dword [esp + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
cmp eax, 4
ja case.0x10546a20.0
jmp dword [eax*4 + 0x105470a0]
push 0xcf1bbcdc
push 0xbb000000
mov eax, dword [esp + 0x38]
push dword [eax + 4]
push dword [eax]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ebx, eax
jmp 0x10546a86
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x10546a31
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x10546a31
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x10546a31
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x90]
imul ebx, dword [eax], 0x9e3779b1
shr ebx, cl
mov ecx, dword [esp + 0x30]
mov esi, ebp
mov eax, dword [esp + 0x64]
add ebp, eax
mov edx, dword [esp + 0x54]
mov dword [esp + 0x24], ecx
add ecx, eax
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x30], ecx
cmp ebp, edx
jb 0x10546ab4
inc eax
sub edx, 0xffffff80
mov dword [esp + 0x64], eax
mov dword [esp + 0x54], edx
cmp ecx, dword [esp + 0x44]
jae 0x10546ffd
mov edx, dword [esp + 0x10]
jmp 0x105468c2
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x48]
mov ebp, 4
mov edx, dword [esp + 0x50]
sub eax, edi
cmp edi, dword [esp + 0x2c]
mov dword [esp + 0x38], ebp
cmovb edx, dword [esp + 0x74]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x1c]
cmovb edx, dword [esp + 0x4c]
mov dword [esp + 0x30], edx
lea edx, [ecx + edi]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], eax
add eax, 3
cmp dword [esp + 0x64], edx
mov dword [esp + 0x40], ecx
sbb ecx, ecx
mov dword [esp + 0x60], eax
neg ecx
cmp dword [esp + 0x8c], esi
sbb eax, eax
neg eax
test eax, ecx
je 0x10546b84
mov al, byte [esi - 1]
cmp al, byte [edx - 1]
jne 0x10546b4b
dec edx
inc ebp
dec esi
mov dword [esp + 0x38], ebp
cmp dword [esp + 0x64], edx
sbb ecx, ecx
neg ecx
cmp dword [esp + 0x8c], esi
sbb eax, eax
neg eax
test eax, ecx
jne 0x10546b25
mov ecx, dword [esp + 0x38]
jmp 0x10546b86
cmp ecx, dword [esp + 0x2c]
mov esi, ebp
mov eax, dword [esp + 0x1c]
cmovb eax, dword [esp + 0x4c]
xor ecx, ecx
mov dword [esp + 0x30], eax
mov al, byte [ebp - 1]
cmp al, byte [edx - 1]
mov dword [esp + 0x60], 1
sete cl
sub esi, ecx
sub edx, ecx
add ecx, 4
mov dword [esp + 0x38], ecx
jmp 0x10546b86
mov ecx, ebp
lea edi, [ecx + edx]
lea edx, [ecx + esi]
mov ecx, dword [esp + 0x1c]
mov eax, edx
mov dword [esp + 0x70], edx
sub eax, edi
add eax, dword [esp + 0x30]
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.1054a920
mov ebp, eax
mov dword [esp + 0x70], eax
add esp, 0xc
lea eax, [edi + ebp]
cmp eax, dword [esp + 0x30]
jne 0x10546bd8
push dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
push dword [esp + 0x54]
add eax, ebp
push eax
call fcn.1054a920
add esp, 0xc
add ebp, eax
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x38]
mov ecx, esi
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x84]
add edx, 0xffffffe0
sub ecx, dword [esp + 0x8c]
add ebp, dword [esp + 0x64]
mov dword [esp + 0x38], ecx
mov eax, dword [edi + 0xc]
cmp esi, edx
ja 0x10546c61
mov edx, dword [esp + 0x8c]
movups xmm0, xmmword [edx]
movups xmmword [eax], xmm0
cmp ecx, 0x10
jbe 0x10546c77
movups xmm0, xmmword [edx + 0x10]
lea eax, [ecx - 0x10]
mov ecx, dword [edi + 0xc]
add ecx, 0x10
lea edi, [ecx + eax]
mov dword [esp + 0x8c], edi
mov edi, dword [esp + 0x84]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x10546c73
mov eax, dword [esp + 0x8c]
add ecx, 0x10
add edx, 0x20
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [ecx + 0x10], xmm0
add ecx, 0x20
cmp ecx, eax
jb 0x10546c47
jmp 0x10546c73
push edx
push esi
push dword [esp + 0x94]
push eax
call fcn.1054a9a0
add esp, 0x10
mov ecx, dword [esp + 0x38]
add dword [edi + 0xc], ecx
cmp ecx, 0xffff
jbe 0x10546c94
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
mov dword [edi + 0x24], 1
mov dword [edi + 0x28], eax
mov eax, dword [edi + 4]
mov word [eax + 4], cx
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x60]
mov dword [eax], ecx
lea ecx, [ebp - 3]
cmp ecx, 0xffff
jbe 0x10546cc1
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
mov dword [edi + 0x24], 2
mov dword [edi + 0x28], eax
mov eax, dword [edi + 4]
add esi, ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x8c], esi
mov word [eax + 6], cx
add dword [edi + 4], 8
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x34]
cmp eax, esi
jae 0x10546cea
sub eax, ebp
mov dword [edi + ebx*4], eax
cmp esi, dword [esp + 0x44]
ja 0x10546fbf
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x48]
cmp eax, 4
ja case.0x10546d01.0
jmp dword [eax*4 + 0x105470b4]
push 0xcf1bbcdc
push 0xbb000000
push dword [ebx + ebp + 6]
push dword [ebx + ebp + 2]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov ecx, eax
lea eax, [ebx + 2]
mov ebx, dword [esp + 0x14]
mov dword [edi + ecx*4], eax
mov ecx, dword [esp + 0x90]
jmp switch.0x10546d84
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x10546d12
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x10546d12
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x10546d12
imul edx, dword [ebx + ebp + 2], 0x9e3779b1
lea eax, [ebx + 2]
mov ecx, dword [esp + 0x90]
mov ebx, dword [esp + 0x14]
shr edx, cl
mov dword [edi + edx*4], eax
cmp ebx, 4
ja case.0x10546d84.0
jmp dword [ebx*4 + 0x105470c8]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 2]
push dword [esi - 2]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, eax
jmp 0x10546ddd
push 0xcf1bbcdc
push 0xbf9b0000
jmp 0x10546d95
push 0xcf1bbcdc
push 0xbfa56300
jmp 0x10546d95
push 0xcf1bbcdc
push 0xb7a56463
jmp 0x10546d95
imul edx, dword [esi - 2], 0x9e3779b1
shr edx, cl
mov eax, esi
sub eax, ebp
sub eax, 2
mov dword [edi + edx*4], eax
mov edi, esi
sub edi, dword [esp + 0x40]
mov edx, edi
sub edx, ebp
mov ebp, dword [esp + 0x2c]
cmp edx, ebp
jae 0x10546dff
mov edi, dword [esp + 0x3c]
add edi, edx
mov eax, ebp
sub eax, edx
dec eax
cmp eax, 3
sbb ecx, ecx
xor eax, eax
inc ecx
cmp eax, dword [esp + 0x40]
sbb eax, eax
neg eax
test eax, ecx
je 0x10546fc3
mov eax, dword [edi]
cmp eax, dword [esi]
jne 0x10546fc3
mov ecx, dword [esp + 0x1c]
cmp edx, ebp
mov ebx, ecx
lea edx, [esi + 4]
cmovb ebx, dword [esp + 0x4c]
mov eax, edx
add edi, 4
sub eax, edi
add eax, ebx
cmp eax, ecx
cmovb ecx, eax
push ecx
push edi
push edx
call fcn.1054a920
mov ebp, eax
add esp, 0xc
lea eax, [edi + ebp]
cmp eax, ebx
jne 0x10546e70
push dword [esp + 0x1c]
lea eax, [ebp + 4]
push dword [esp + 0x54]
add eax, esi
push eax
call fcn.1054a920
add esp, 0xc
add ebp, eax
mov edi, dword [esp + 0x84]
add ebp, 4
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
add ebx, 0xffffffe0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x40], ecx
cmp esi, ebx
ja 0x10546ea0
movups xmm0, xmmword [esi]
movups xmmword [eax], xmm0
jmp 0x10546eac
push ebx
push esi
push esi
push eax
call fcn.1054a9a0
add esp, 0x10
mov eax, dword [edi + 4]
xor ecx, ecx
mov word [eax + 4], cx
lea ecx, [ebp - 3]
mov eax, dword [edi + 4]
mov dword [eax], 1
cmp ecx, 0xffff
jbe 0x10546edb
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
mov dword [edi + 0x24], 2
mov dword [edi + 0x28], eax
mov eax, dword [edi + 4]
mov ebx, dword [esp + 0x14]
mov word [eax + 6], cx
add dword [edi + 4], 8
cmp ebx, 4
ja case.0x10546ef3.0
jmp dword [ebx*4 + 0x105470dc]
push 0xcf1bbcdc
push 0xbb000000
push dword [esi + 4]
push dword [esi]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, eax
jmp 0x10546f99
push 0xcf1bbcdc
push 0xbf9b0000
push dword [esi + 4]
push dword [esi]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, eax
jmp 0x10546f99
push 0xcf1bbcdc
push 0xbfa56300
push dword [esi + 4]
push dword [esi]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, eax
jmp 0x10546f99
push 0xcf1bbcdc
push 0xb7a56463
push dword [esi + 4]
push dword [esi]
call fcn.10511b50
mov ecx, dword [esp + 0x80]
call fcn.10512520
mov edx, eax
jmp 0x10546f99
imul edx, dword [esi], 0x9e3779b1
mov ecx, dword [esp + 0x90]
shr edx, cl
mov ecx, dword [esp + 0x34]
mov eax, esi
sub eax, dword [esp + 0x10]
add esi, ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x8c], esi
mov dword [ecx + edx*4], eax
cmp esi, dword [esp + 0x44]
jbe 0x10546de7
jmp 0x10546fc3
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x58]
lea eax, [esi + 0x80]
mov edi, dword [esp + 0x80]
lea edx, [esi + 1]
add ebp, esi
mov dword [esp + 0x54], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x5c], ebp
lea ecx, [ebp + 1]
cmp ecx, dword [esp + 0x44]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x90]
jb 0x10546780
mov edi, dword [esp + 0x8c]
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x18]
test edx, edx
je 0x1054701d
test eax, eax
cmovne ecx, edx
test eax, eax
cmovne edx, eax
mov eax, dword [esp + 0x88]
test ebx, ebx
cmovne ecx, ebx
mov dword [eax], edx
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x1c]
sub eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret