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

Disassembly:
sub esp, 0x74
push ebx
push ebp
mov ebp, ecx
mov dword [esp + 0x34], edx
push esi
push edi
mov dword [esp + 0x30], ebp
mov al, byte [ebp + 0x2c]
mov edi, dword [ebp]
movzx esi, al
mov dword [esp + 0x58], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], edi
mov byte [esp + 0x16], al
mov dword [esp + 0x40], esi
cmp esi, 1
ja 0x100b05d2
mov ebx, 1
jmp 0x100b05e2
cmp esi, 2
mov ebx, 0xa
mov eax, 5
cmove ebx, eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x48], ebx
test eax, eax
je 0x100b05f6
test dx, dx
je 0x100b05f6
mov ecx, dword [eax]
jmp 0x100b05f8
xor ecx, ecx
lea eax, [esi*4]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x68], eax
add eax, 0x20
imul eax, ebx
add eax, ecx
mov ecx, dword [edi]
add eax, eax
cdq
push edx
push eax
call fcn.1001d1c0
mov edx, eax
add esp, 8
mov dword [esp + 0x4c], edx
test edx, edx
jne 0x100b0633
lea eax, [edx + 7]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
mov eax, ebx
xorps xmm0, xmm0
shl eax, 5
mov edi, edx
lea esi, [eax + edx]
mov dword [esp + 0x2c], edi
movups xmmword [esi], xmm0
mov dword [esp + 0x20], esi
add edx, 0x18
lea ecx, [eax + esi]
lea eax, [ebx + ebx]
mov ebx, dword [esp + 0x68]
movups xmmword [esi + 0x10], xmm0
nop dword [eax]
mov dword [edx], ecx
lea edx, [edx + 0x20]
dec eax
add ecx, ebx
test eax, eax
jg 0x100b0660
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x100b0687
lea eax, [ebx + ebx]
mov dword [esp + 0x70], ecx
push eax
push 0
push ecx
call fcn.10106200
add esp, 0xc
mov eax, dword [esp + 0x6c]
mov ecx, 0x30
mov eax, dword [eax + 0x8c]
cmp eax, ecx
cmovb ecx, eax
mov eax, 1
mov word [esi + 0x10], cx
mov ch, byte [esp + 0x16]
mov dword [esp + 0x64], eax
test ebx, ebx
je 0x100b06c9
movzx eax, bl
or edx, 0xffffffff
mov ebx, dword [esp + 0x20]
test ch, ch
cmovne eax, edx
mov byte [ebx + 0x16], al
mov eax, 1
jmp 0x100b06cd
mov ebx, dword [esp + 0x20]
xor edx, edx
mov dword [esp + 0x38], edx
test ch, ch
je 0x100b0d4e
nop dword [eax + eax]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
test eax, eax
jle 0x100b0c70
lea esi, [ebx + 0x10]
mov dword [esp + 0x24], esi
mov ebp, dword [ebp + 0x40]
mov dword [esp + 0x28], ebp
test ebp, ebp
je 0x100b0c54
mov edx, dword [esi - 0x10]
mov ecx, edx
mov ebx, dword [esi - 0xc]
not ecx
and ecx, dword [ebp]
mov eax, ebx
not eax
mov dword [esp + 0x50], edx
and eax, dword [ebp + 4]
or ecx, eax
mov dword [esp + 0x54], ebx
jne 0x100b0cf1
mov ecx, edx
mov eax, ebx
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x100b0cf1
test dword [ebp + 0x2c], 0x4000
je 0x100b074d
cmp word [esi], 3
jl 0x100b0cf1
mov ecx, dword [esp + 0x28]
movzx ebp, word [esi]
mov ax, word [ecx + 0x14]
movzx edi, word [ecx + 0x12]
add ax, bp
movzx esi, ax
movsx ecx, di
movsx edx, si
cmp di, si
jl 0x100b0792
lea eax, [edx + 0x31]
cmp ecx, eax
jle 0x100b0778
mov esi, edi
jmp 0x100b07b4
lea eax, [edx + 0x1f]
cmp ecx, eax
jle 0x100b0784
lea eax, [edi + 1]
jmp 0x100b07b1
sub ecx, edx
movzx eax, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add ax, di
jmp 0x100b07b1
lea eax, [ecx + 0x31]
cmp edx, eax
jg 0x100b07b4
lea eax, [ecx + 0x1f]
cmp edx, eax
jle 0x100b07a5
lea eax, [esi + 1]
jmp 0x100b07b1
sub edx, ecx
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, si
movzx esi, ax
mov eax, dword [esp + 0x24]
mov bx, si
mov dword [esp + 0x18], esi
movsx ecx, bx
movzx edi, word [eax + 4]
movsx edx, di
cmp bx, di
jl 0x100b07f6
lea eax, [edx + 0x31]
cmp ecx, eax
jg 0x100b0823
lea eax, [edx + 0x1f]
cmp ecx, eax
jle 0x100b07df
inc esi
jmp 0x100b081c
sub ecx, edx
movzx eax, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add bx, ax
mov word [esp + 0x18], bx
mov esi, dword [esp + 0x18]
jmp 0x100b0823
lea eax, [ecx + 0x31]
cmp edx, eax
jle 0x100b0801
mov esi, edi
jmp 0x100b081c
lea eax, [ecx + 0x1f]
cmp edx, eax
jle 0x100b080d
lea eax, [edi + 1]
jmp 0x100b0819
sub edx, ecx
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, di
movzx esi, ax
mov dword [esp + 0x18], esi
mov bx, si
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov ax, word [eax + 0x16]
add ax, bp
mov ebp, dword [esp + 0x28]
movzx eax, ax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x50]
or eax, dword [ebp + 8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x54]
or eax, dword [ebp + 0xc]
mov dword [esp + 0x54], eax
mov al, byte [ecx + 6]
mov byte [esp + 0x17], al
test al, al
jns 0x100b0a16
mov edi, dword [esp + 0x30]
lea eax, [esp + 0x78]
push eax
push ebp
push dword [esp + 0x40]
movzx eax, word [edi + 0x28]
xorps xmm0, xmm0
mov edx, dword [edi + 8]
push eax
lea eax, [ecx - 0x10]
movlpd qword [esp + 0x88], xmm0
push eax
mov ecx, edi
call fcn.100afc00
mov ah, al
add esp, 0x14
mov byte [esp + 0x17], ah
test ah, ah
jns 0x100b0a28
sub esi, 2
movzx edx, bx
mov dword [esp + 0x18], esi
mov bx, si
cmp dword [esp + 0x38], 0
mov edi, dword [esp + 0x34]
jne 0x100b08cb
test dword [ebp + 0x2c], 0x2000000
je 0x100b08cb
sub edx, 0xa
sub edi, 0x1e
mov dword [esp + 0x34], edi
mov esi, dword [esp + 0x2c]
xor ecx, ecx
cmp dword [esp + 0x1c], ecx
jle 0x100b0901
mov ebp, dword [esp + 0x50]
cmp dword [esi], ebp
jne 0x100b08f7
mov ebp, dword [esp + 0x54]
cmp dword [esi + 4], ebp
mov ebp, dword [esp + 0x28]
jne 0x100b08f7
mov al, byte [esi + 0x16]
xor al, ah
jge 0x100b0c03
inc ecx
add esi, 0x20
cmp ecx, dword [esp + 0x1c]
jl 0x100b08d7
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
cmp ecx, eax
jl 0x100b0927
mov ebp, dword [esp + 0x60]
cmp dx, bp
jg 0x100b0ce8
jne 0x100b0927
cmp bx, word [esp + 0x5c]
jge 0x100b0ce8
mov ebp, dword [esp + 0x28]
cmp ecx, eax
mov esi, ecx
lea eax, [ecx + 1]
cmovge esi, dword [esp + 0x58]
shl esi, 5
add esi, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x48]
cmovge eax, ecx
mov dword [esp + 0x1c], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x24]
or eax, dword [edi - 0xc]
or ecx, dword [edi - 0x10]
mov edi, dword [esp + 0x34]
mov dword [esi + 4], eax
mov dword [esi], ecx
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
mov dword [esi + 8], eax
mov al, byte [esp + 0x17]
mov byte [esi + 0x16], al
mov eax, dword [esp + 0x38]
mov word [esi + 0x10], di
mov dword [esi + 0xc], ecx
mov word [esi + 0x12], dx
lea edi, [eax*4]
mov word [esi + 0x14], bx
mov eax, dword [esp + 0x24]
push edi
push dword [eax + 8]
push dword [esi + 0x18]
call fcn.10107690
mov eax, dword [esi + 0x18]
add esp, 0xc
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x48]
mov dword [edi + eax], ebp
mov edi, dword [esp + 0x2c]
cmp ecx, ebx
jl 0x100b0c3d
movzx ebp, word [edi + 0x12]
mov ecx, 1
movzx esi, word [edi + 0x10]
mov dword [esp + 0x58], 0
mov dword [esp + 0x60], ebp
mov dword [esp + 0x5c], esi
cmp ebx, ecx
jbe 0x100b0a09
lea eax, [edi + 0x34]
nop
movzx edx, word [eax - 2]
cmp dx, bp
jg 0x100b09f0
jne 0x100b09f9
cmp word [eax], si
jle 0x100b09f9
movzx esi, word [eax]
mov ebp, edx
mov dword [esp + 0x58], ecx
inc ecx
add eax, 0x20
cmp ecx, ebx
jl 0x100b09e0
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
jmp 0x100b0c3d
mov eax, dword [ecx - 8]
mov ecx, dword [ecx - 4]
mov dword [esp + 0x78], eax
mov ah, byte [esp + 0x17]
mov dword [esp + 0x7c], ecx
movzx edi, ah
cmp edi, dword [esp + 0x44]
jge 0x100b08a0
mov eax, dword [esp + 0x70]
lea eax, [eax + edi*2]
mov dword [esp + 0x74], eax
movzx eax, word [eax]
mov ecx, eax
test ax, ax
jne 0x100b0b50
mov eax, dword [esp + 0x3c]
movzx ebp, ax
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
mov eax, 0x88888889
add ecx, 0x3b
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
push edx
push eax
call fcn.10022070
add ax, word [esp + 0x44]
add esp, 8
movzx edx, ax
mov dword [esp + 0x18], edx
test edi, edi
je 0x100b0ac2
mov eax, dword [esp + 0x44]
sub eax, edi
imul eax, eax, 0x64
cdq
idiv dword [esp + 0x44]
cdq
push edx
push eax
call fcn.10022070
mov cx, word [esp + 0x20]
sub ax, 0x42
add esp, 8
add cx, ax
mov word [esp + 0x18], cx
mov edx, dword [esp + 0x18]
jmp 0x100b0ac7
mov cx, word [esp + 0x18]
mov eax, dword [esp + 0x30]
movzx eax, word [eax + 0x28]
test eax, 0x4000
je 0x100b0b03
lea ecx, [edx + 0xa]
test edi, edi
lea eax, [ecx + 6]
movzx edx, ax
movzx eax, cx
cmove edx, eax
mov eax, dword [esp + 0x30]
movzx ecx, dx
movzx eax, word [eax + 0x2a]
cmp ax, word [esp + 0x3c]
jge 0x100b0afb
mov ebp, eax
mov eax, ecx
mov dword [esp + 0x18], eax
jmp 0x100b0b1a
test eax, 0x100
je 0x100b0b1a
mov eax, dword [esp + 0x3c]
cmp ax, 0xa
jle 0x100b0b26
add eax, 0xfffffff6
movzx ebp, ax
movzx edi, cx
movzx eax, bp
cmp bp, 0xa
jg 0x100b0b2b
movzx eax, cx
jmp 0x100b0b40
cwde
cdq
push edx
push eax
call fcn.10022070
lea ecx, [edi - 0x21]
add esp, 8
add ax, cx
movzx eax, ax
mov edx, dword [esp + 0x74]
mov ebp, dword [esp + 0x28]
movzx eax, ax
mov ecx, eax
mov word [edx], ax
movzx edi, cx
movsx ecx, bx
movsx edx, di
cmp bx, di
jl 0x100b0bb1
lea eax, [edx + 0x31]
cmp ecx, eax
jle 0x100b0b77
movzx eax, bx
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
lea eax, [edx + 0x1f]
cmp ecx, eax
jle 0x100b0b93
lea eax, [esi + 1]
movzx eax, ax
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
sub ecx, edx
movzx eax, byte [ecx + str._n_n_t_t_b_b_a_a_a]
add ax, bx
movzx eax, ax
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
lea eax, [ecx + 0x31]
cmp edx, eax
jle 0x100b0bc9
mov eax, edi
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
lea eax, [ecx + 0x1f]
cmp edx, eax
jle 0x100b0be5
lea eax, [edi + 1]
movzx eax, ax
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
sub edx, ecx
movzx eax, byte [edx + str._n_n_t_t_b_b_a_a_a]
add ax, di
movzx eax, ax
add eax, 3
movzx edx, ax
mov ah, byte [esp + 0x17]
jmp 0x100b08ad
cmp ecx, dword [esp + 0x1c]
jge 0x100b0901
movzx eax, word [esi + 0x12]
cmp ax, dx
jl 0x100b0c35
jne 0x100b0949
movzx eax, word [esi + 0x10]
cmp ax, di
jl 0x100b0c35
jne 0x100b0949
cmp word [esi + 0x14], bx
jg 0x100b0949
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
mov ebp, dword [ebp + 0x3c]
mov dword [esp + 0x28], ebp
test ebp, ebp
jne 0x100b0704
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x30]
add esi, 0x20
sub eax, 1
mov dword [esp + 0x24], esi
mov dword [esp + 0x64], eax
jne 0x100b06f5
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x20]
inc edx
mov ebx, edi
mov eax, ecx
mov edi, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x64], eax
mov dword [esp + 0x38], edx
cmp edx, dword [esp + 0x40]
jl 0x100b06e0
test ecx, ecx
jne 0x100b0d4e
mov ebx, dword [esp + 0x6c]
push str.no_query_solution
push ebx
call fcn.10020b80
mov ecx, dword [ebx]
add esp, 8
mov edx, dword [esp + 0x4c]
test ecx, ecx
je 0x100b0d38
cmp edx, dword [ecx + 0x164]
jae 0x100b0d1d
cmp edx, dword [ecx + 0x15c]
jb 0x100b0cfa
mov eax, dword [ecx + 0x158]
mov dword [edx], eax
mov eax, 1
mov dword [ecx + 0x158], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
mov ebp, dword [esp + 0x28]
jmp 0x100b0c39
mov ecx, dword [esp + 0x1c]
jmp 0x100b0c41
cmp edx, dword [ecx + 0x160]
jb 0x100b0d1d
mov eax, dword [ecx + 0x150]
mov dword [edx], eax
mov eax, 1
mov dword [ecx + 0x150], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
cmp dword [ecx + 0x210], 0
je 0x100b0d38
call fcn.1001cde0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
push edx
call fcn.1001cd70
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
cmp eax, 1
jle 0x100b0d77
lea ecx, [ebx + 0x20]
lea edx, [eax - 1]
nop dword [eax]
mov ax, word [ebx + 0x12]
cmp ax, word [ecx + 0x12]
cmovg ebx, ecx
add ecx, 0x20
sub edx, 1
jne 0x100b0d60
mov dword [esp + 0x20], ebx
xor esi, esi
cmp byte [esp + 0x16], 0
jbe 0x100b0db6
lea edx, [ebp + 0x334]
mov eax, dword [ebx + 0x18]
lea edx, [edx + 0x60]
mov eax, dword [eax + esi*4]
inc esi
mov dword [edx - 0x4c], eax
mov al, byte [eax + 0x10]
mov byte [edx - 0x60], al
movzx eax, al
lea ecx, [eax + eax*8]
mov eax, dword [ebp + 4]
mov eax, dword [eax + ecx*8 + 0x34]
mov ecx, dword [esp + 0x40]
mov dword [edx - 0x98], eax
cmp esi, ecx
jl 0x100b0d86
jmp 0x100b0dba
mov ecx, dword [esp + 0x40]
mov ax, word [ebp + 0x28]
mov edx, 0x180
and ax, dx
mov edx, 0x100
cmp ax, dx
jne 0x100b0e16
cmp byte [ebp + 0x2f], 0
jne 0x100b0e16
cmp word [esp + 0x3c], 0
je 0x100b0e16
lea eax, [esp + 0x78]
push eax
mov eax, dword [ebx + 0x18]
lea edx, [ecx*4]
push dword [eax + edx - 4]
mov edx, dword [ebp + 0xc]
lea eax, [ecx - 1]
push eax
push 0x80
push ebx
mov ecx, ebp
call fcn.100afc00
movsx ecx, al
add esp, 0x14
mov eax, dword [ebp + 0xc]
cmp ecx, dword [eax]
jne 0x100b0e16
mov byte [ebp + 0x2f], 2
mov ebx, dword [ebp + 0x30]
mov edi, dword [ebp + 8]
and ebx, 0xfffffffb
mov dword [ebp + 0x30], ebx
test edi, edi
je 0x100b0f5c
mov ecx, dword [esp + 0x20]
movzx edx, word [ebp + 0x28]
mov al, byte [ecx + 0x16]
mov byte [esp + 0x17], al
mov byte [ebp + 0x2d], al
test dl, dl
jns 0x100b0e55
movsx eax, byte [ecx + 0x16]
cmp eax, dword [edi]
jne 0x100b0e4c
mov byte [ebp + 0x2f], 2
mov eax, edx
mov esi, edi
jmp 0x100b0efc
mov eax, dword [ecx + 8]
mov esi, edi
mov ecx, dword [ecx + 0xc]
mov dword [ebp + 0x4c], ecx
mov cl, byte [esp + 0x17]
mov dword [ebp + 0x48], eax
test cl, cl
jg 0x100b0fa2
cmp byte [esp + 0x16], 0
mov byte [ebp + 0x2d], 0
jbe 0x100b0ef4
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x68]
mov eax, dword [esi + 0x18]
mov esi, edi
mov ebx, dword [eax + ecx - 4]
mov eax, dword [ebx + 0x2c]
and eax, 0x104
cmp eax, 0x104
setne cl
bt dword [ebx + 0x2c], 0xc
setae al
test al, cl
je 0x100b0ef4
lea eax, [esp + 0x78]
xorps xmm0, xmm0
push eax
mov eax, dword [esp + 0x44]
mov edx, edi
push ebx
dec eax
movlpd qword [esp + 0x80], xmm0
push eax
push 0x800
push dword [esp + 0x30]
mov ecx, ebp
call fcn.100afc00
mov esi, dword [ebp + 8]
add esp, 0x14
movsx eax, al
cmp eax, dword [esi]
jne 0x100b0ef4
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
or dword [ebp + 0x30], 4
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x4c], ecx
movzx eax, word [ebp + 0x28]
mov ecx, dword [esp + 0x20]
test eax, 0x200
je 0x100b0f5c
movsx eax, byte [ebp + 0x2d]
cmp eax, dword [esi]
jne 0x100b0f5c
cmp byte [esp + 0x16], 0
jbe 0x100b0f5c
mov edx, dword [esp + 0x68]
lea eax, [esp + 0x78]
push eax
mov eax, dword [ecx + 0x18]
xorps xmm0, xmm0
movlpd qword [esp + 0x7c], xmm0
push dword [eax + edx - 4]
mov eax, dword [esp + 0x48]
mov edx, esi
dec eax
push eax
push 0
push ecx
mov ecx, ebp
call fcn.100afc00
movsx ecx, al
add esp, 0x14
mov eax, dword [ebp + 8]
cmp ecx, dword [eax]
jne 0x100b0f5c
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
or dword [ebp + 0x30], 8
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x4c], ecx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x4c]
mov ax, word [eax + 0x10]
mov word [ebp + 0x34], ax
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax]
test ecx, ecx
je 0x100b100b
cmp edx, dword [ecx + 0x164]
jae 0x100b0ff3
cmp edx, dword [ecx + 0x15c]
jb 0x100b0fd3
mov eax, dword [ecx + 0x158]
mov dword [edx], eax
xor eax, eax
mov dword [ecx + 0x158], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
mov ch, byte [esp + 0x16]
mov eax, edx
test ch, ch
je 0x100b0ef8
mov esi, edi
cmp cl, 1
jne 0x100b0ef8
mov ecx, dword [esp + 0x20]
test dl, 3
je 0x100b0efc
or ebx, 4
mov dword [ebp + 0x30], ebx
jmp 0x100b0efc
cmp edx, dword [ecx + 0x160]
jb 0x100b0ff3
mov eax, dword [ecx + 0x150]
mov dword [edx], eax
xor eax, eax
mov dword [ecx + 0x150], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
cmp dword [ecx + 0x210], 0
je 0x100b100b
call fcn.1001cde0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret
push edx
call fcn.1001cd70
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret