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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
mov esi, esp
mov dword [esi + 0x130], ebp
mov dword [esi + 4], ecx
mov dword [esi + 0x134], esp
mov dword [esi + 0x140], 0xffffffff
lea eax, [esi + 0x138]
mov dword [esi + 0x13c], 0x654b60
mov ecx, dword fs:[0]
mov dword [esi + 0x138], ecx
mov dword fs:[0], eax
lea ecx, [esi + 0x80]
push 1
call fcn.005440b0
movzx eax, byte [0xb29412]
cmp al, 0xb5
je 0x6518d8
mov cl, 0x7c
nop word [eax + eax]
mov al, 0xd8
lock cmpxchg byte [0xb29412], cl
je 0x6518c2
cmp al, 0xb5
jne 0x6518b0
jmp 0x6518d8
xor byte [0xb29410], 0x13
xor byte [0xb29411], 0xb1
mov al, 0xb5
xchg byte [0xb29412], al
movzx ecx, byte [ebp + 0xc]
movzx eax, byte [0xb29422]
cmp al, 0xb5
je 0x651922
mov dl, 0xdb
nop dword [eax]
mov al, 0x15
lock cmpxchg byte [0xb29422], dl
je 0x651902
cmp al, 0xb5
jne 0x6518f0
jmp 0x651922
xor byte [0xb29420], 0xd4
xor byte [0xb29421], 0x15
mov al, 0xb5
xchg byte [0xb29422], al
mov dword [esi + 0x140], 1
mov eax, 0xb29410
mov edx, 0xb29420
test cl, cl
cmovne edx, eax
mov dword [esi + 0x14], edx
mov eax, dword [esi + 0x80]
mov eax, dword [eax + 4]
mov byte [esi + eax + 0xc0], 0x30
mov dword [esi + 0x140], 1
lea ecx, [esi + 0x18]
mov dword [esi + 0x10], ecx
mov edx, 4
push 0
call fcn.00654a50
add esp, 4
lea edx, [esi + 0x90]
mov eax, dword [esi + 0x24]
mov dword [esi + 8], eax
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x90]
mov ebx, dword [eax + 4]
add ebx, edx
mov dword [esi + 0x140], 0xffffffff
mov edi, dword [esi + 0x20]
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 8]
push edi
push ebx
call ecx
add esp, 0xc
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x6519b6
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x10]
lea ecx, [esi + 0x90]
push eax
call fcn.00651f10
mov ecx, eax
movzx eax, byte [0xb29432]
cmp al, 0x28
je 0x651a12
mov dl, 0xd7
nop dword [eax + eax]
mov al, 0x52
lock cmpxchg byte [0xb29432], dl
je 0x6519f2
cmp al, 0x28
jne 0x6519e0
jmp 0x651a12
xor byte [0xb29430], 0x28
xor byte [0xb29431], 0x98
mov al, 0x28
xchg byte [0xb29432], al
mov dword [esi + 0x140], 1
mov dword [esi + 0x140], 1
push 0xb29430
push ecx
call fcn.005442b0
add esp, 8
mov dword [esi + 8], eax
lea ecx, [esi + 0x70]
mov edx, 2
push 0
call fcn.00654a50
add esp, 4
mov eax, dword [esi + 0x7c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x70]
mov ebx, dword [esi + 0x78]
mov edx, dword [esi + 8]
mov eax, dword [edx]
mov edi, dword [eax + 4]
add edi, edx
mov dword [esi + 0x140], 0xffffffff
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 0xc]
push ebx
push edi
call ecx
add esp, 0xc
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x651a8a
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x12]
mov ecx, dword [esi + 8]
push eax
call fcn.00651f10
mov ecx, eax
movzx eax, byte [0xb29432]
cmp al, 0x28
je 0x651ae2
mov dl, 0xd7
nop dword [eax]
mov al, 0x52
lock cmpxchg byte [0xb29432], dl
je 0x651ac2
cmp al, 0x28
jne 0x651ab0
jmp 0x651ae2
xor byte [0xb29430], 0x28
xor byte [0xb29431], 0x98
mov al, 0x28
xchg byte [0xb29432], al
mov dword [esi + 0x140], 1
mov dword [esi + 0x140], 1
push 0xb29430
push ecx
call fcn.005442b0
add esp, 8
mov dword [esi + 8], eax
lea ecx, [esi + 0x60]
mov edx, 2
push 0
call fcn.00654a50
add esp, 4
mov eax, dword [esi + 0x6c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x60]
mov ebx, dword [esi + 0x68]
mov edx, dword [esi + 8]
mov eax, dword [edx]
mov edi, dword [eax + 4]
add edi, edx
mov dword [esi + 0x140], 0xffffffff
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 0xc]
push ebx
push edi
call ecx
add esp, 0xc
cmp byte [0xb53271], 0
jne 0x651b5b
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x651b63
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x16]
mov ecx, dword [esi + 8]
push eax
call fcn.00651f10
push dword [esi + 0x14]
push eax
call fcn.005442b0
add esp, 8
mov dword [esi + 8], eax
lea ecx, [esi + 0x50]
mov edx, 2
push 0
call fcn.00654a50
add esp, 4
mov eax, dword [esi + 0x5c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x50]
mov ebx, dword [esi + 0x58]
mov edx, dword [esi + 8]
mov eax, dword [edx]
mov edi, dword [eax + 4]
add edi, edx
mov dword [esi + 0x140], 0xffffffff
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 0xc]
push ebx
push edi
call ecx
add esp, 0xc
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x651bdf
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x18]
mov ecx, dword [esi + 8]
push eax
call fcn.00651f10
mov ecx, eax
movzx eax, byte [0xb29442]
cmp al, 2
je 0x651c32
mov dl, 0xec
nop
mov al, 0x80
lock cmpxchg byte [0xb29442], dl
je 0x651c12
cmp al, 2
jne 0x651c00
jmp 0x651c32
xor byte [0xb29440], 0xee
xor byte [0xb29441], 0x98
mov al, 2
xchg byte [0xb29442], al
mov dword [esi + 0x140], 1
mov dword [esi + 0x140], 1
push 0xb29440
push ecx
call fcn.005442b0
add esp, 8
mov dword [esi + 8], eax
lea ecx, [esi + 0x40]
mov edx, 2
push 0
call fcn.00654a50
add esp, 4
mov eax, dword [esi + 0x4c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x40]
mov ebx, dword [esi + 0x48]
mov edx, dword [esi + 8]
mov eax, dword [edx]
mov edi, dword [eax + 4]
add edi, edx
mov dword [esi + 0x140], 0xffffffff
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 0xc]
push ebx
push edi
call ecx
add esp, 0xc
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x651caa
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x1a]
mov ecx, dword [esi + 8]
push eax
call fcn.00651f10
mov ecx, eax
movzx eax, byte [0xb29442]
cmp al, 2
je 0x651d02
mov dl, 0xec
nop dword [eax]
mov al, 0x80
lock cmpxchg byte [0xb29442], dl
je 0x651ce2
cmp al, 2
jne 0x651cd0
jmp 0x651d02
xor byte [0xb29440], 0xee
xor byte [0xb29441], 0x98
mov al, 2
xchg byte [0xb29442], al
mov dword [esi + 0x140], 1
mov dword [esi + 0x140], 1
push 0xb29440
push ecx
call fcn.005442b0
add esp, 8
mov dword [esi + 8], eax
lea ecx, [esi + 0x30]
mov edx, 2
push 0
call fcn.00654a50
add esp, 4
mov eax, dword [esi + 0x3c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x30]
mov ebx, dword [esi + 0x38]
mov edx, dword [esi + 8]
mov eax, dword [edx]
mov edi, dword [eax + 4]
add edi, edx
mov dword [esi + 0x140], 0xffffffff
call dword [0xb0836c]
mov dword [esi + 0x140], 1
push dword [esi + 0xc]
push ebx
push edi
call ecx
add esp, 0xc
mov eax, dword [esi + 4]
cmp byte [eax + 1], 0
jne 0x651d7a
mov ecx, dword [esi + 4]
call fcn.00651090
mov eax, dword [esi + 4]
movzx eax, word [eax + 0x1c]
mov ecx, dword [esi + 8]
push eax
call fcn.00651f10
lea ecx, [esi + 0x98]
lea eax, [esi + 0x18]
push eax
call fcn.0055d5e0
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x18], 0
mov edi, dword [esi + 0x28]
cmp dword [esi + 0x2c], 0x10
jb 0x651db9
mov eax, dword [esi + 0x18]
mov dword [esi + 0x10], eax
lea ecx, [ebx + 4]
cmp edi, 0xf
ja 0x651dd1
mov eax, dword [esi + 0x10]
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
mov eax, 0xf
jmp 0x651e41
mov dword [esi + 0xc], ecx
mov dword [esi + 4], edi
mov eax, edi
or eax, 0xf
cmp eax, 0x7fffffff
mov ecx, 0x7fffffff
cmovb ecx, eax
cmp ecx, 0xfff
mov dword [esi + 8], ecx
jb 0x651e13
add ecx, 0x24
mov dword [esi + 0x140], 2
call fcn.0053d610
mov ecx, eax
add eax, 0x23
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x651e23
inc ecx
mov dword [esi + 0x140], 2
call fcn.0053d610
mov ebx, dword [ebp + 8]
mov edi, dword [esi + 4]
mov ecx, dword [esi + 0xc]
mov dword [ecx], eax
lea ecx, [edi + 1]
push ecx
push dword [esi + 0x10]
push eax
call fcn.0077cce0
add esp, 0xc
mov eax, dword [esi + 8]
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x18], eax
mov dword [ebx], 0x799e70
mov eax, dword [esi + 0x2c]
cmp eax, 0x10
jb 0x651e7c
mov ecx, dword [esi + 0x18]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x651e77
mov edi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edi
cmp ecx, 0x20
jae 0x651e9f
add eax, 0x24
mov edx, eax
mov ecx, edi
call fcn.0053e020
lea ecx, [esi + 0x80]
call fcn.00544da0
mov eax, dword [esi + 0x138]
mov dword fs:[0], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov dword [esi + 0x140], 0
call fcn.00748ef1
nop
push ebp
sub esp, 0xc
lea esi, [ebp - 0x144]
mov ebp, dword [esi + 0x130]
call fcn.0077ccd0
nop word cs:[eax + eax]
push ebp
sub esp, 0xc
lea esi, [ebp - 0x144]
mov ebp, dword [esi + 0x130]
lea ecx, [esi + 0x18]
call fcn.00529740
add esp, 0xc
pop ebp
ret