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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov ebx, ecx
mov eax, dword [0x754040]
xor eax, ebp
mov dword [esp + 0x88], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax]
mov ecx, dword [ecx]
test eax, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ecx
mov dword [esp + 0x24], eax
jne 0x51e5f0
mov edx, dword [ebx + 8]
cmp edx, 0x3ffffff1
jae 0x51edfa
lea esi, [edx + 0x17]
and esi, 0x7ffffff8
cmp esi, 0x11
jb 0x51ed7e
cmp esi, dword [ecx + 0x10]
ja 0x51ed7e
mov dword [esp + 0x18], edx
mov eax, dword [ebx + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x28]
mov dl, byte [ecx + 0x1c]
test dl, 1
jne 0x51ee0c
mov edi, dword [ecx + 4]
mov edx, dword [edi + 0x24]
test dl, 1
jne 0x51edf6
mov dword [esp + 0x14], 0x6d289c
mov dword [esp + 0x10], esi
add esi, eax
mov ebx, dword [ecx + 0xc]
cmp esi, ebx
ja 0x51edd0
cmp eax, 0x40
jb 0x51ee01
mov edx, eax
and edx, 7
jne 0x51ee01
mov edx, eax
add edx, 0x10
jb 0x51ee01
cmp edx, ebx
ja 0x51ee01
mov edx, edi
add edx, eax
mov dword [esp + 0x20], edx
je 0x51ee01
mov ecx, dword [ecx + 0x10]
mov dword [esp + 8], eax
xor edx, edx
div ecx
sub ecx, edx
mov eax, ecx
sub eax, dword [esp + 0x10]
jb 0x51ee35
cmp eax, 0x17
jbe 0x51ed69
mov eax, dword [esp + 8]
lock cmpxchg dword [edi + 0x28], esi
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x20]
jne 0x51f39c
mov dword [esp + 8], eax
cmp dword [edi], 0
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jne 0x51ee01
cmp dword [edi + 4], 0
jne 0x51ee01
mov eax, dword [edi + 8]
test eax, eax
jne 0x51ee01
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x51ee01
mov eax, dword [ecx + 0x14]
lea edx, [edi + eax]
add edx, 0xf
neg eax
and eax, edx
lea edx, [edi + esi]
cmp edx, eax
ja 0x51ed46
mov dword [edi], esi
mov dword [edi + 4], 0xc8799269
mov eax, dword [esp + 0x1c]
mov dword [edi + 8], eax
mov edx, dword [esp + 8]
test edx, edx
je 0x51ee0c
mov esi, dword [ecx + 0x20]
test esi, esi
jne 0x51f67d
mov ecx, dword [ebx + 0x10]
xor eax, eax
lock cmpxchg dword [ecx], edx
mov ecx, dword [ebx]
mov dword [esp + 4], ecx
jne 0x51f69b
mov dword [esp + 8], edx
cmp edx, 0x40
jb 0x51e5ff
mov eax, dword [esp + 8]
and eax, 7
jne 0x51e5ff
mov eax, dword [ebx + 8]
lea edi, [eax + 0x10]
mov ecx, dword [esp + 8]
add ecx, edi
jb 0x51e5ff
mov edx, dword [esp + 4]
mov esi, dword [edx + 0xc]
cmp ecx, esi
ja 0x51e5ff
mov edx, dword [ebx + 4]
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [ecx + ebx + 4]
cmp ebx, 0xc8799269
mov ebx, dword [esp + 0xc]
jne 0x51e5ff
add ecx, dword [esp + 8]
mov ebx, dword [ecx]
cmp ebx, edi
mov ebx, dword [esp + 0xc]
jb 0x51e5ff
mov edi, dword [ecx]
add edi, dword [esp + 8]
jb 0x51e5ff
cmp edi, esi
ja 0x51e5ff
test edx, edx
je 0x51e5be
mov esi, dword [ecx + 8]
cmp esi, edx
jne 0x51e5ff
test ecx, ecx
je 0x51e5ff
add ecx, 0x10
je 0x51e5ff
mov edx, dword [ebx + 0xc]
sub eax, edx
add ecx, edx
mov esi, dword [ebp + 8]
mov dword [esi], ecx
mov dword [esi + 4], eax
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.00550b46
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
mov dword [esp + 0x14], 0x6d289c
mov edx, eax
jmp 0x51e540
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x24]
xor edx, edx
test al, 2
mov esi, 0x6d289c
mov edi, 0x6d2897
cmovne esi, edi
sete dl
or edx, 4
mov eax, dword [0x758d88]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x767ee8]
cmp ecx, dword [eax + 4]
jg 0x51f5b1
lea ecx, [esp + 0x48]
push edx
push esi
push dword [0x767ee4]
call fcn.00514c40
mov dword [esp + 0x3c], 0xffffffff
mov ecx, dword [ebx]
mov al, byte [ecx + 0x1c]
test al, 1
jne 0x51e67e
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x24]
mov edi, 0x6d289c
test al, 1
jne 0x51ed56
push edi
call fcn.0056aa10
add esp, 4
mov esi, eax
mov eax, dword [0x767ef0]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f3b1
lea ecx, [esp + 0x3c]
push esi
push edi
push dword [0x767eec]
call fcn.00514c40
mov dword [esp + 0x80], 0xffffffff
mov eax, dword [ebx]
mov eax, dword [eax + 4]
lea esi, [esp + 0x70]
push dword [eax + 0x28]
push esi
call fcn.005032f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x51e6eb
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x51ed67
sete al
test esi, esi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ef8]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f3f1
lea ecx, [esp + 0x80]
push edi
push esi
push dword [0x767ef4]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51e74b
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x30], 0xffffffff
mov eax, dword [ebx]
mov eax, dword [eax + 4]
lea esi, [esp + 0x70]
push dword [eax]
push esi
call fcn.005032f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x51e777
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x51ed67
sete al
test esi, esi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f00]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f431
lea ecx, [esp + 0x30]
push edi
push esi
push dword [0x767efc]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51e7d4
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x6c], 0xffffffff
lea esi, [esp + 0x70]
push dword [esp + 8]
push esi
call fcn.005032f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x51e7fd
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x51ed67
sete al
test esi, esi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f08]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f471
lea ecx, [esp + 0x6c]
push edi
push esi
push dword [0x767f04]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51e85a
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
xor ecx, ecx
cmp dword [esp + 0x24], 0
sete cl
mov eax, 0x6d289c
mov esi, 0x6d2897
cmove esi, eax
mov dword [esp + 0x68], 0xffffffff
or ecx, 4
mov edi, ecx
mov eax, dword [0x767f10]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f4b1
lea ecx, [esp + 0x68]
push edi
push esi
push dword [0x767f0c]
call fcn.00514c40
mov dword [esp + 0x64], 0xffffffff
mov edi, dword [esp + 0x14]
push edi
call fcn.0056aa10
add esp, 4
mov esi, eax
mov eax, dword [0x767f18]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f4f1
lea ecx, [esp + 0x64]
push esi
push edi
push dword [0x767f14]
call fcn.00514c40
mov dword [esp + 0x60], 0xffffffff
lea esi, [esp + 0x70]
push dword [ebx + 4]
push esi
call fcn.005032f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x51e921
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x51ed67
sete al
test esi, esi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f20]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f531
lea ecx, [esp + 0x60]
push edi
push esi
push dword [0x767f1c]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51e97e
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x5c], 0xffffffff
lea esi, [esp + 0x70]
push dword [ebx + 8]
push esi
call fcn.005032f0
add esp, 8
movsx edi, byte [esi + 0xb]
test edi, edi
jns 0x51e9a6
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test edi, edi
js 0x51ed67
sete al
test esi, esi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f28]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f571
lea ecx, [esp + 0x5c]
push edi
push esi
push dword [0x767f24]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51ea03
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
cmp dword [esp + 8], 0xc8799269
jne 0x51ec95
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [ebx + 0x10]
lea esi, [eax - 4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x75cc90]
bt edx, ecx
jae 0x51ed29
push 4
push esi
push eax
call fcn.004953d0
add esp, 0xc
mov ecx, esi
shr ecx, 0xe
mov edx, esi
shr edx, 0x13
mov eax, dword [edx*4 + 0x75cc90]
bt eax, ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
jae 0x51ec54
push esi
call fcn.00494f50
add esp, 4
lea edi, [esp + 0x70]
push dword [esi]
push edi
call fcn.005032f0
add esp, 8
movsx ebx, byte [edi + 0xb]
test ebx, ebx
jns 0x51ea8f
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
test ebx, ebx
js 0x51ed67
sete al
test edi, edi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f30]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f5fd
lea ecx, [esp + 0x58]
push ebx
push edi
push dword [0x767f2c]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51eaec
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov eax, dword [esp + 4]
mov eax, dword [eax*4 + 0x75cc90]
mov ecx, dword [esp + 8]
bt eax, ecx
mov edi, dword [esp + 0xc]
jae 0x51eb0d
push esi
call fcn.00495070
add esp, 4
mov dword [esp + 0x54], 0xffffffff
mov eax, dword [edi + 0x10]
lea esi, [eax + 4]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x75cc90]
bt edx, ecx
jae 0x51ec76
push 4
push esi
push eax
call fcn.004953d0
add esp, 0xc
mov ecx, esi
shr ecx, 0xe
mov eax, esi
shr eax, 0x13
mov dword [esp + 4], eax
mov eax, dword [eax*4 + 0x75cc90]
mov dword [esp + 8], ecx
bt eax, ecx
jae 0x51ec65
push esi
call fcn.00494f50
add esp, 4
lea edi, [esp + 0x70]
push dword [esi]
push edi
call fcn.005032f0
add esp, 8
movsx ebx, byte [edi + 0xb]
test ebx, ebx
jns 0x51eb8b
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x70]
test ebx, ebx
js 0x51ed67
sete al
test edi, edi
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767f38]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f63d
lea ecx, [esp + 0x54]
push ebx
push edi
push dword [0x767f34]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51ebe8
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov eax, dword [esp + 4]
mov eax, dword [eax*4 + 0x75cc90]
mov ecx, dword [esp + 8]
bt eax, ecx
jae 0x51ec05
push esi
call fcn.00495070
add esp, 4
lea edi, [esp + 0x70]
push 0x543
push 0x6e9e80
push 0x6e9ef1
push edi
call fcn.005080c0
add esp, 0x10
lea esi, [esp + 0x2c]
push edi
push esi
call fcn.005cefc0
add esp, 8
mov ecx, esi
call fcn.005cf040
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
lea ecx, [esp + 0x54]
call fcn.00514cc0
lea ecx, [esp + 0x58]
call fcn.00514cc0
jmp 0x51ecd0
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x764c90], 1
jmp 0x51ea70
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x764c90], 1
jmp 0x51eb6c
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x75cc90]
bt ecx, eax
jae 0x51eb41
jmp 0x51f725
lea edi, [esp + 0x70]
push 0x549
push 0x6e9e80
push 0x6e9ef1
push edi
call fcn.005080c0
add esp, 0x10
lea esi, [esp + 0x28]
push edi
push esi
call fcn.005cefc0
add esp, 8
mov ecx, esi
call fcn.005cf040
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
lea ecx, [esp + 0x5c]
call fcn.00514cc0
lea ecx, [esp + 0x60]
call fcn.00514cc0
lea ecx, [esp + 0x64]
call fcn.00514cc0
lea ecx, [esp + 0x68]
call fcn.00514cc0
lea ecx, [esp + 0x6c]
call fcn.00514cc0
lea ecx, [esp + 0x30]
call fcn.00514cc0
lea ecx, [esp + 0x80]
call fcn.00514cc0
lea ecx, [esp + 0x3c]
call fcn.00514cc0
lea ecx, [esp + 0x48]
call fcn.00514cc0
jmp 0x51e5d6
mov eax, esi
shr eax, 0xe
mov ecx, esi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x75cc90]
bt ecx, eax
jae 0x51ea45
int3
mov byte [eax], 0
add eax, dword [ecx + 0x14]
cmp eax, edx
jae 0x51e504
jmp 0x51ed46
push 0
call fcn.006435e0
mov edi, 0x6d2897
jmp 0x51e67e
ud2
mov eax, dword [esp + 8]
lea esi, [ecx + eax]
mov dword [esp + 0x10], ecx
cmp esi, ebx
jbe 0x51e4a0
jmp 0x51ede5
mov dword [esp + 0x84], 0x14
mov dword [esp + 0x80], 0x1dd76000
lea esi, [esp + 0x70]
push 0x2a1
push 0x6e9e80
push 0x6e9eb2
push esi
call fcn.005080c0
add esp, 4
movsd xmm0, qword [esp + 0x8c]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
call fcn.005ce130
mov ecx, dword [esp + 0x10]
add esp, 0xc
jmp 0x51ee0c
mov eax, dword [edi + 0x24]
mov ecx, dword [esp + 4]
mov edx, eax
or edx, 2
lock cmpxchg dword [edi + 0x24], edx
jne 0x51edd7
jmp 0x51ee0c
mov esi, dword [esp + 4]
mov ecx, esi
push 1
call fcn.006435e0
mov ecx, esi
jmp 0x51ee0c
push 0
jmp 0x51ee03
call fcn.005cf110
jmp 0x51ee08
push 1
call fcn.006435e0
mov ecx, dword [esp + 4]
mov esi, dword [ecx + 0x20]
test esi, esi
je 0x51ee26
mov eax, dword [esi]
mov edi, dword [eax + 0x14]
mov ecx, edi
call dword [0x74e248]
mov ecx, esi
push 0
call edi
xor eax, eax
mov esi, dword [ebp + 8]
mov dword [esi + 4], eax
mov dword [esi], eax
jmp 0x51e5d6
cmp ecx, 0x10
jbe 0x51ede5
mov edi, ecx
mov dword [esp + 0x6c], 0xffffffff
lea esi, [esp + 0x70]
push ebx
push esi
call fcn.005032f0
add esp, 8
mov ebx, esi
movsx esi, byte [esi + 0xb]
test esi, esi
jns 0x51ee64
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ea8]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f728
lea ecx, [esp + 0x6c]
push esi
push ebx
push dword [0x767ea4]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51eec1
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x68], 0xffffffff
lea ebx, [esp + 0x70]
mov eax, dword [esp + 4]
push dword [eax + 0x10]
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51eeed
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767eb0]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f768
lea ecx, [esp + 0x68]
push esi
push ebx
push dword [0x767eac]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51ef4a
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x64], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 8]
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51ef73
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767eb8]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f7a8
lea ecx, [esp + 0x64]
push esi
push ebx
push dword [0x767eb4]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51efd0
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x60], 0xffffffff
lea ebx, [esp + 0x70]
push edi
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51eff6
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ec0]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f7e8
lea ecx, [esp + 0x60]
push esi
push ebx
push dword [0x767ebc]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51f053
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x5c], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x10]
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51f07c
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ec8]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f828
lea ecx, [esp + 0x5c]
push esi
push ebx
push dword [0x767ec4]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51f0d9
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x58], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x18]
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51f102
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ed0]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f868
lea ecx, [esp + 0x58]
push esi
push ebx
push dword [0x767ecc]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51f15f
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
mov dword [esp + 0x54], 0xffffffff
lea ebx, [esp + 0x70]
push dword [esp + 0x1c]
push ebx
call fcn.005032f0
add esp, 8
movsx esi, byte [ebx + 0xb]
test esi, esi
jns 0x51f188
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ed8]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f8a8
lea ecx, [esp + 0x54]
push esi
push ebx
push dword [0x767ed4]
call fcn.00514c40
cmp byte [esp + 0x7b], 0
jns 0x51f1e5
push dword [esp + 0x70]
call fcn.0054fc10
add esp, 4
xor eax, eax
dec eax
lea ebx, [esp + 0x48]
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov ecx, ebx
push 0x6e9ebf
call fcn.004e7400
call fcn.0051a6f0
test eax, eax
je 0x51f26f
mov esi, eax
mov ecx, eax
call fcn.006418a0
test al, al
je 0x51f26f
mov ecx, esi
call fcn.00641890
lea esi, [esp + 0x3c]
mov ecx, eax
push esi
call fcn.00509360
lea eax, [esp + 0x70]
mov ecx, esi
push eax
call fcn.00491ea0
cmp byte [esp + 0x53], 0
jns 0x51f248
push dword [esp + 0x48]
call fcn.0054fc10
add esp, 4
mov eax, dword [esp + 0x78]
mov dword [esp + 0x50], eax
movsd xmm0, qword [esp + 0x70]
movsd qword [esp + 0x48], xmm0
xor eax, eax
mov byte [esp + 0x7b], al
mov byte [esp + 0x70], al
lea ecx, [esp + 0x3c]
call fcn.00508510
mov dword [esp + 0x3c], 0xffffffff
movsx esi, byte [esp + 0x53]
test esi, esi
cmovs esi, dword [esp + 0x4c]
cmovs ebx, dword [esp + 0x48]
test esi, esi
js 0x51ed67
sete al
test ebx, ebx
setne cl
or cl, al
je 0x51ed67
mov eax, dword [0x767ee0]
mov ecx, dword [0x758d88]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x51f8e8
lea ecx, [esp + 0x3c]
push esi
push ebx
push dword [0x767edc]
call fcn.00514c40
mov dword [esp + 0x34], 0x14
mov dword [esp + 0x30], 0x1dd76000
lea esi, [esp + 0x70]
push 0x2e6
push 0x6e9e80
push 0x6e9eb2
push esi
call fcn.005080c0
add esp, 4
movsd xmm0, qword [esp + 0x3c]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
call fcn.005ce130
add esp, 0xc
mov esi, dword [esp + 8]
lea ecx, [edi + esi]
mov eax, dword [esp + 4]
mov edx, dword [eax + 4]
mov eax, esi
lock cmpxchg dword [edx + 0x28], ecx
mov esi, eax
jne 0x51f33b
mov eax, dword [esp + 0x20]
mov dword [eax], edi
mov dword [eax + 4], 0x4b594f52
lea ecx, [esp + 0x3c]
call fcn.00514cc0
cmp byte [esp + 0x53], 0
jns 0x51f357
push dword [esp + 0x48]
call fcn.0054fc10
add esp, 4
lea ecx, [esp + 0x54]
call fcn.00514cc0
lea ecx, [esp + 0x58]
call fcn.00514cc0
lea ecx, [esp + 0x5c]
call fcn.00514cc0
lea ecx, [esp + 0x60]
call fcn.00514cc0
lea ecx, [esp + 0x64]
call fcn.00514cc0
lea ecx, [esp + 0x68]
call fcn.00514cc0
lea ecx, [esp + 0x6c]
call fcn.00514cc0
mov ecx, dword [esp + 4]
mov eax, esi
mov dl, byte [ecx + 0x1c]
test dl, 1
mov esi, dword [esp + 0x10]
je 0x51e421
jmp 0x51ee0c
push 0x767ef0
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ef0], 0xffffffff
jne 0x51e6aa
push 0x20
push 0x6ea031
call fcn.004a7510
add esp, 8
mov dword [0x767eec], eax
push 0x767ef0
call fcn.0054fcd7
add esp, 4
jmp 0x51e6aa
push 0x767ef8
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ef8], 0xffffffff
jne 0x51e724
push 0x20
push 0x6e9f44
call fcn.004a7510
add esp, 8
mov dword [0x767ef4], eax
push 0x767ef8
call fcn.0054fcd7
add esp, 4
jmp 0x51e724
push 0x767f00
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f00], 0xffffffff
jne 0x51e7b0
push 0x20
push 0x6ea055
call fcn.004a7510
add esp, 8
mov dword [0x767efc], eax
push 0x767f00
call fcn.0054fcd7
add esp, 4
jmp 0x51e7b0
push 0x767f08
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f08], 0xffffffff
jne 0x51e836
push 0x20
push 0x6ea076
call fcn.004a7510
add esp, 8
mov dword [0x767f04], eax
push 0x767f08
call fcn.0054fcd7
add esp, 4
jmp 0x51e836
push 0x767f10
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f10], 0xffffffff
jne 0x51e89f
push 0x20
push 0x6ea094
call fcn.004a7510
add esp, 8
mov dword [0x767f0c], eax
push 0x767f10
call fcn.0054fcd7
add esp, 4
jmp 0x51e89f
push 0x767f18
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f18], 0xffffffff
jne 0x51e8e8
push 0x20
push 0x6ea0b8
call fcn.004a7510
add esp, 8
mov dword [0x767f14], eax
push 0x767f18
call fcn.0054fcd7
add esp, 4
jmp 0x51e8e8
push 0x767f20
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f20], 0xffffffff
jne 0x51e95a
push 0x20
push 0x6ea0d8
call fcn.004a7510
add esp, 8
mov dword [0x767f1c], eax
push 0x767f20
call fcn.0054fcd7
add esp, 4
jmp 0x51e95a
push 0x767f28
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f28], 0xffffffff
jne 0x51e9df
push 0x20
push 0x6ea0f8
call fcn.004a7510
add esp, 8
mov dword [0x767f24], eax
push 0x767f28
call fcn.0054fcd7
add esp, 4
jmp 0x51e9df
push 0x767ee8
mov dword [esp + 8], edx
call fcn.0054fc5d
mov edx, dword [esp + 8]
add esp, 4
cmp dword [0x767ee8], 0xffffffff
jne 0x51e649
push 0x20
push 0x6ea012
call fcn.004a7510
add esp, 8
mov dword [0x767ee4], eax
push 0x767ee8
call fcn.0054fcd7
mov edx, dword [esp + 8]
add esp, 4
jmp 0x51e649
push 0x767f30
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f30], 0xffffffff
jne 0x51eac8
push 0x20
push 0x6ea118
call fcn.004a7510
add esp, 8
mov dword [0x767f2c], eax
push 0x767f30
call fcn.0054fcd7
add esp, 4
jmp 0x51eac8
push 0x767f38
call fcn.0054fc5d
add esp, 4
cmp dword [0x767f38], 0xffffffff
jne 0x51ebc4
push 0x20
push 0x6ea13d
call fcn.004a7510
add esp, 8
mov dword [0x767f34], eax
push 0x767f38
call fcn.0054fcd7
add esp, 4
jmp 0x51ebc4
mov eax, dword [esi]
mov edi, dword [eax + 0x14]
mov ecx, edi
call dword [0x74e248]
mov ecx, esi
push dword [esp + 0x18]
call edi
mov edx, dword [esp + 8]
jmp 0x51e52b
mov edi, eax
cmp edx, 0x40
setb al
test dl, 7
setne cl
mov dword [esp + 0x14], 0x6d2897
or cl, al
jne 0x51f6f2
mov eax, dword [esp + 8]
add eax, 0x10
jb 0x51f6f2
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 0xc]
cmp eax, ecx
ja 0x51f6f2
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
mov edx, dword [esp + 4]
mov edx, dword [edx + 4]
mov esi, dword [esp + 8]
mov esi, dword [edx + esi + 4]
cmp esi, 0xc8799269
jne 0x51f6f2
add edx, dword [esp + 8]
mov esi, dword [edx]
cmp esi, 0x10
jae 0x51f6fd
mov ebx, dword [esp + 0xc]
mov edx, edi
jmp 0x51e540
mov esi, dword [edx]
add esi, dword [esp + 8]
setb bl
test edx, edx
je 0x51f6f2
test bl, bl
jne 0x51f6f2
cmp esi, ecx
ja 0x51f6f2
xor ecx, ecx
lock cmpxchg dword [edx + 8], ecx
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx]
mov dword [esp + 4], eax
jmp 0x51f6f6
int3
push 0x767ea8
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ea8], 0xffffffff
jne 0x51ee9d
push 0x20
push 0x6e9efc
call fcn.004a7510
add esp, 8
mov dword [0x767ea4], eax
push 0x767ea8
call fcn.0054fcd7
add esp, 4
jmp 0x51ee9d
push 0x767eb0
call fcn.0054fc5d
add esp, 4
cmp dword [0x767eb0], 0xffffffff
jne 0x51ef26
push 0x20
push 0x6e9f20
call fcn.004a7510
add esp, 8
mov dword [0x767eac], eax
push 0x767eb0
call fcn.0054fcd7
add esp, 4
jmp 0x51ef26
push 0x767eb8
call fcn.0054fc5d
add esp, 4
cmp dword [0x767eb8], 0xffffffff
jne 0x51efac
push 0x20
push 0x6e9f44
call fcn.004a7510
add esp, 8
mov dword [0x767eb4], eax
push 0x767eb8
call fcn.0054fcd7
add esp, 4
jmp 0x51efac
push 0x767ec0
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ec0], 0xffffffff
jne 0x51f02f
push 0x20
push 0x6e9f66
call fcn.004a7510
add esp, 8
mov dword [0x767ebc], eax
push 0x767ec0
call fcn.0054fcd7
add esp, 4
jmp 0x51f02f
push 0x767ec8
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ec8], 0xffffffff
jne 0x51f0b5
push 0x20
push 0x6e9f8a
call fcn.004a7510
add esp, 8
mov dword [0x767ec4], eax
push 0x767ec8
call fcn.0054fcd7
add esp, 4
jmp 0x51f0b5
push 0x767ed0
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ed0], 0xffffffff
jne 0x51f13b
push 0x20
push 0x6e9fa9
call fcn.004a7510
add esp, 8
mov dword [0x767ecc], eax
push 0x767ed0
call fcn.0054fcd7
add esp, 4
jmp 0x51f13b
push 0x767ed8
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ed8], 0xffffffff
jne 0x51f1c1
push 0x20
push 0x6e9fcc
call fcn.004a7510
add esp, 8
mov dword [0x767ed4], eax
push 0x767ed8
call fcn.0054fcd7
add esp, 4
jmp 0x51f1c1
push 0x767ee0
call fcn.0054fc5d
add esp, 4
cmp dword [0x767ee0], 0xffffffff
jne 0x51f2c1
push 0x100
push 0x6e9fee
call fcn.004a7510
add esp, 8
mov dword [0x767edc], eax
push 0x767ee0
call fcn.0054fcd7
add esp, 4
jmp 0x51f2c1