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

Disassembly:
push ebp
push edi
push ebx
sub esp, 0x120
mov edi, eax
mov ebx, dword [eax]
mov ebp, ebx
and ebp, 3
and ebx, 0xfffffffc
mov eax, ebx
shr eax, 0x14
cmp byte [eax + 0x8e78c0], 0
jne 0x7ab752
cmp dword [0x8e7880], 0
je case.0x7ab60c.8
mov ecx, dword [ebx]
sub ecx, 8
movzx eax, word [ecx + 4]
sub eax, 7
cmp eax, 0x19
ja case.0x7ab60c.9
jmp dword [eax*4 + 0x89bfec]
cmp word [ecx + 6], 0
je case.0x7ab60c.8
cmp dword [ebx + 8], 0
jne case.0x7ab60c.8
mov edx, 0
mov ecx, dword [esi + 0x30]
mov eax, edx
lock cmpxchg dword [ebx + 8], ecx
test eax, eax
jne case.0x7ab60c.8
mov dword [esi + 0x30], ebx
jmp case.0x7ab60c.8
cmp word [ecx + 6], 0
je case.0x7ab60c.8
cmp dword [ebx + 4], 0
jne case.0x7ab60c.8
mov edx, 0
mov ecx, dword [esi + 0x30]
mov eax, edx
lock cmpxchg dword [ebx + 4], ecx
test eax, eax
jne case.0x7ab60c.8
mov dword [esi + 0x30], ebx
jmp case.0x7ab60c.8
cmp dword [ebx + 0xc], 0
jne case.0x7ab60c.8
cmp dword [ebx + 8], 0
jne case.0x7ab60c.8
mov edx, 0
mov ecx, dword [esi + 0x30]
mov eax, edx
lock cmpxchg dword [ebx + 8], ecx
test eax, eax
jne case.0x7ab60c.8
mov dword [esi + 0x30], ebx
jmp case.0x7ab60c.8
mov ebp, ecx
mov edi, ebx
movzx eax, word [ecx + 4]
lea edx, [ebx + 8]
cmp eax, 0x16
je 0x7ab6e3
cmp eax, 0x16
jg 0x7ab6cd
lea edx, [ebx + 4]
cmp eax, 0xf
je 0x7ab6e3
jmp 0x7ab6d5
lea edx, [ebx + 8]
cmp eax, 0x20
je 0x7ab6e3
movzx edx, word [ebp]
movzx eax, word [ebp + 2]
add edx, eax
lea edx, [edi + edx*4 + 4]
cmp dword [edx], 0
jne case.0x7ab60c.8
mov edi, ecx
mov edx, ebx
movzx eax, word [ecx + 4]
lea ecx, [ebx + 8]
cmp eax, 0x16
je 0x7ab720
cmp eax, 0x16
jg 0x7ab70b
lea ecx, [ebx + 4]
cmp eax, 0xf
je 0x7ab720
jmp 0x7ab713
lea ecx, [ebx + 8]
cmp eax, 0x20
je 0x7ab720
movzx ecx, word [edi]
movzx eax, word [edi + 2]
add ecx, eax
lea ecx, [edx + ecx*4 + 4]
mov edx, 0
mov edi, dword [esi + 0x30]
mov eax, edx
lock cmpxchg dword [ecx], edi
test eax, eax
jne case.0x7ab60c.8
mov dword [esi + 0x30], ebx
jmp case.0x7ab60c.8
movzx eax, word [ecx + 4]
mov dword [esp + 4], eax
mov dword [esp], 0x89bf80
call fcn.007a5da0
mov eax, ebx
and eax, 0xff000
shr eax, 7
mov edx, ebx
and edx, 0xfff00000
or edx, eax
mov eax, dword [edx + 0x1c]
test al, 0xb
je 0x7ab997
test al, 1
je 0x7ab78d
mov eax, dword [edx + 0x14]
cmp eax, dword [esi + 0x40]
jae case.0x7ab60c.8
mov dword [esi + 0x44], 1
jmp case.0x7ab60c.8
test byte [edx + 0x1c], 2
je 0x7ab91f
mov ecx, dword [ebx]
sub ecx, 8
cmp word [ecx + 4], 0x38
jne 0x7ab7b4
cmp word [ebx + 0xc], 4
jne 0x7ab7b4
mov ebx, dword [ebx + 4]
mov dword [edi], ebx
jmp case.0x7ab9fb.72
mov eax, ebx
and eax, 0xff000
shr eax, 7
mov edx, ebx
and edx, 0xfff00000
mov ecx, eax
or ecx, edx
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x20], edx
mov ebx, edx
add ebx, 0xc0
mov edx, 1
mov edi, 0
mov eax, edx
lock cmpxchg dword [ebx], edi
test eax, eax
jne 0x7ab7f7
add dword [ebx + 8], 1
adc dword [ebx + 0xc], 0
jmp 0x7ab7d9
test byte [ecx + 0x1c], 1
je 0x7ab820
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x40], edx
jbe 0x7ab80d
mov dword [esi + 0x44], 1
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xc0], 1
jmp case.0x7ab60c.8
cmp dword [ecx + 0xc], 0
je 0x7ab831
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 8]
mov dword [edx + 8], eax
jmp 0x7ab83b
mov eax, dword [ecx + 8]
mov ebp, dword [esp + 0x20]
mov dword [ebp + 0x20], eax
cmp dword [ecx + 8], 0
je 0x7ab84a
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 0x1c]
cmp dword [esi + 0x40], edi
jbe 0x7ab868
cmp dword [esi + 0x48], 0
je 0x7ab861
mov edi, dword [esi + 0x40]
jmp 0x7ab868
mov dword [esi + 0x44], 1
mov eax, dword [edi + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ecx + 0x1c]
or edx, 1
mov dword [ecx + 0x1c], edx
mov dword [ecx + 0x14], edi
mov eax, dword [edi + 0xc]
mov dword [ecx + 0x10], eax
test dl, 4
je 0x7ab903
cmp edi, dword [esp + 0x20]
je 0x7ab8b6
lea ebx, [edi + 0xc0]
mov edx, 1
mov eax, edx
mov ebp, 0
lock cmpxchg dword [ebx], ebp
test eax, eax
jne 0x7ab8b6
add dword [ebx + 8], 1
adc dword [ebx + 0xc], 0
jmp 0x7ab898
mov edx, ecx
lea ebx, [edi + 0xf8]
mov eax, dword [edi + 0xf8]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0
cmp dword [edi + 0xf8], 0
je 0x7ab8e0
mov eax, dword [edi + 0xf8]
mov dword [eax + 0xc], ecx
mov dword [ebx], edx
mov eax, dword [edi + 0xfc]
add eax, dword [ecx + 0x18]
mov dword [edi + 0xfc], eax
cmp edi, dword [esp + 0x20]
je 0x7ab90c
mov dword [edi + 0xc0], 1
jmp 0x7ab90c
mov eax, dword [ebx + 0x18]
mov dword [ecx + 8], eax
mov dword [ebx + 0x18], ecx
mov eax, dword [esp + 0x20]
mov dword [eax + 0xc0], 1
jmp case.0x7ab60c.8
mov edi, dword [edx]
mov ecx, ebx
sub ecx, edi
sar ecx, 2
mov ebp, ecx
shr ebp, 5
mov dword [esp + 0x24], ebp
mov edx, dword [edx + 0xc]
and ecx, 0x1f
mov ebp, 1
mov eax, ebp
shl eax, cl
mov ecx, eax
mov eax, dword [esp + 0x24]
test dword [edx + eax*4], ecx
jne case.0x7ab60c.8
mov ecx, ebx
sub ecx, edi
sar ecx, 2
mov eax, ecx
shr eax, 5
and ecx, 0x1f
shl ebp, cl
or dword [edx + eax*4], ebp
mov eax, dword [0x8e7850]
cmp eax, dword [0x8e7830]
jb 0x7ab984
mov dword [0x8e7870], 1
mov eax, dword [0x8e7800]
mov dword [0x8e7850], eax
mov eax, dword [0x8e7850]
mov dword [eax], ebx
add dword [0x8e7850], 4
jmp case.0x7ab60c.8
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x11c], eax
mov ecx, dword [ebx]
test cl, 1
je 0x7ab9ee
lea edx, [ecx - 1]
mov eax, edx
or eax, ebp
mov dword [edi], eax
mov ecx, dword [esp + 0x11c]
cmp dword [esi + 0x40], ecx
jbe case.0x7ab60c.8
mov eax, edx
and eax, 0xff000
shr eax, 7
and edx, 0xfff00000
or eax, edx
mov eax, dword [eax + 0x14]
cmp eax, dword [esi + 0x40]
jae case.0x7ab60c.8
mov dword [esi + 0x44], 1
jmp case.0x7ab60c.8
movzx eax, word [ecx - 4]
cmp eax, 0x48
ja case.0x7ab9fb.0
jmp dword [eax*4 + 0x89c054]
movzx edx, word [ecx - 8]
movzx eax, word [ecx - 6]
mov dword [esp + 0x118], edi
mov ebp, ecx
mov dword [esp + 0x114], ebx
lea edi, [edx + eax + 1]
mov dword [esp + 0x110], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7aba43
cmp dword [esi + 0x48], 0
je 0x7aba3c
mov eax, dword [esi + 0x40]
jmp 0x7aba43
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x110]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7aba70
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x110]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x114]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7aba9c
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7aba91
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x114]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7abac3
mov eax, dword [esp + 0x118]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x118]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov eax, dword [ebx + 4]
mov dword [esp + 0x10c], eax
cmp ecx, 0x796afc
sete al
cmp dword [esp + 0x10c], 0xff
setbe dl
movzx eax, al
test edx, eax
je 0x7abb15
mov edx, dword [esp + 0x10c]
lea eax, [edx*8 + 0x861f50]
or eax, ebp
mov dword [edi], eax
jmp case.0x7ab60c.8
cmp ecx, 0x796b1c
sete al
cmp dword [esp + 0x10c], 0xfffffff0
setge dl
movzx eax, al
test edx, eax
je 0x7abb51
cmp dword [esp + 0x10c], 0x10
jg 0x7abb51
mov ecx, dword [esp + 0x10c]
lea eax, [ecx*8 + 0x8627d0]
or eax, ebp
mov dword [edi], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x108], edi
mov dword [esp + 0x104], ecx
mov dword [esp + 0x100], ebp
mov ebp, 2
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abb89
cmp dword [esi + 0x48], 0
je 0x7abb82
mov eax, dword [esi + 0x40]
jmp 0x7abb89
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea edi, [eax + esi + 0x80]
mov edx, dword [edi + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [edi + 0x10]
jbe 0x7abbaf
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [edi + 0xc], eax
mov edi, edx
mov eax, dword [esp + 0x100]
or eax, edx
mov ebp, dword [esp + 0x108]
mov dword [ebp], eax
mov eax, edx
or eax, 1
mov dword [ebx], eax
mov edx, ebx
mov eax, dword [esp + 0x104]
mov dword [edi], eax
mov ebx, 1
cmp ebx, 2
jae case.0x7ab60c.8
mov eax, dword [edx + ebx*4]
mov dword [edi + ebx*4], eax
inc ebx
cmp ebx, 2
jb 0x7abbea
jmp case.0x7ab60c.8
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xf4], ebp
mov ebp, 2
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abc33
cmp dword [esi + 0x48], 0
je 0x7abc2c
mov eax, dword [esi + 0x40]
jmp 0x7abc33
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea edi, [eax + esi + 0x80]
mov edx, dword [edi + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [edi + 0x10]
jbe 0x7abc59
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [edi + 0xc], eax
mov edi, edx
mov eax, dword [esp + 0xf4]
or eax, edx
mov edx, dword [esp + 0xfc]
mov dword [edx], eax
mov eax, edi
or eax, 1
mov dword [ebx], eax
mov edx, ebx
mov ecx, dword [esp + 0xf8]
mov dword [edi], ecx
mov ebx, 1
cmp ebx, 2
jae case.0x7ab60c.8
mov eax, dword [edx + ebx*4]
mov dword [edi + ebx*4], eax
inc ebx
cmp ebx, 2
jb 0x7abc93
jmp case.0x7ab60c.8
mov dword [esp + 0xf0], edi
mov edi, ecx
mov dword [esp + 0xec], ebx
mov ebp, 3
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abcd7
cmp dword [esi + 0x48], 0
je 0x7abcd0
mov eax, dword [esi + 0x40]
jmp 0x7abcd7
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7abcfd
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0xec]
mov dword [edx], edi
mov edx, 1
cmp edx, 3
jae 0x7abd24
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 3
jb 0x7abd18
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0xec]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7abd4b
mov eax, dword [esp + 0xf0]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0xf0]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0xe8], edi
mov edi, ecx
mov dword [esp + 0xe4], ebx
mov ebp, 4
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abd91
cmp dword [esi + 0x48], 0
je 0x7abd8a
mov eax, dword [esi + 0x40]
jmp 0x7abd91
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7abdb7
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0xe4]
mov dword [edx], edi
mov edx, 1
cmp edx, 4
jae 0x7abdde
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 4
jb 0x7abdd2
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0xe4]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7abe05
mov eax, dword [esp + 0xe8]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0xe8]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0xe0], edi
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xd8], ebp
mov ebp, 3
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abe50
cmp dword [esi + 0x48], 0
je 0x7abe49
mov eax, dword [esi + 0x40]
jmp 0x7abe50
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea edi, [eax + esi + 0x80]
mov edx, dword [edi + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [edi + 0x10]
jbe 0x7abe76
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [edi + 0xc], eax
mov edi, edx
mov eax, dword [esp + 0xd8]
or eax, edx
mov ebp, dword [esp + 0xe0]
mov dword [ebp], eax
mov eax, edx
or eax, 1
mov dword [ebx], eax
mov edx, ebx
mov eax, dword [esp + 0xdc]
mov dword [edi], eax
mov ebx, 1
cmp ebx, 3
jae case.0x7ab60c.8
mov eax, dword [edx + ebx*4]
mov dword [edi + ebx*4], eax
inc ebx
cmp ebx, 3
jb 0x7abeb1
jmp case.0x7ab60c.8
mov dword [esp + 0xd4], edi
mov dword [esp + 0xd0], ecx
mov dword [esp + 0xcc], ebp
mov ebp, 3
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abefa
cmp dword [esi + 0x48], 0
je 0x7abef3
mov eax, dword [esi + 0x40]
jmp 0x7abefa
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea edi, [eax + esi + 0x80]
mov edx, dword [edi + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [edi + 0x10]
jbe 0x7abf20
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [edi + 0xc], eax
mov edi, edx
mov eax, dword [esp + 0xcc]
or eax, edx
mov edx, dword [esp + 0xd4]
mov dword [edx], eax
mov eax, edi
or eax, 1
mov dword [ebx], eax
mov edx, ebx
mov ecx, dword [esp + 0xd0]
mov dword [edi], ecx
mov ebx, 1
cmp ebx, 3
jae case.0x7ab60c.8
mov eax, dword [edx + ebx*4]
mov dword [edi + ebx*4], eax
inc ebx
cmp ebx, 3
jb 0x7abf5a
jmp case.0x7ab60c.8
movzx edx, word [ecx - 8]
movzx eax, word [ecx - 6]
mov dword [esp + 0xc8], edi
mov ebp, ecx
mov dword [esp + 0xc4], ebx
lea edi, [edx + eax + 2]
mov dword [esp + 0xc0], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7abfac
cmp dword [esi + 0x48], 0
je 0x7abfa5
mov eax, dword [esi + 0x40]
jmp 0x7abfac
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0xc0]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7abfd9
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0xc0]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0xc4]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac005
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7abffa
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0xc4]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac02c
mov eax, dword [esp + 0xc8]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0xc8]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0xbc], edi
mov dword [esp + 0xb8], ecx
movzx edx, word [ecx - 8]
movzx eax, word [ecx - 6]
lea eax, [edx + eax + 1]
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], ebp
mov ebp, eax
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac087
cmp dword [esi + 0x48], 0
je 0x7ac080
mov eax, dword [esi + 0x40]
jmp 0x7ac087
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea edi, [eax + esi + 0x80]
mov edx, dword [edi + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [edi + 0x10]
jbe 0x7ac0ad
mov dword [esp + 4], edi
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [edi + 0xc], eax
mov edi, edx
mov eax, dword [esp + 0xb0]
or eax, edx
mov ebp, dword [esp + 0xbc]
mov dword [ebp], eax
mov eax, edx
or eax, 1
mov dword [ebx], eax
mov edx, ebx
mov eax, dword [esp + 0xb8]
mov dword [edi], eax
mov ebx, 1
cmp ebx, dword [esp + 0xb4]
jae case.0x7ab60c.8
mov eax, dword [edx + ebx*4]
mov dword [edi + ebx*4], eax
inc ebx
cmp ebx, dword [esp + 0xb4]
jb 0x7ac0ec
jmp case.0x7ab60c.8
mov dword [esp + 0xac], edi
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xa4], ebx
movzx edx, word [ecx - 8]
movzx eax, word [ecx - 6]
lea edi, [edx + eax + 1]
mov dword [esp + 0xa0], ebp
mov ebp, edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac149
cmp dword [esi + 0x48], 0
je 0x7ac142
mov eax, dword [esi + 0x40]
jmp 0x7ac149
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac16f
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0xa4]
mov edx, dword [esp + 0xa8]
mov dword [ecx], edx
mov edx, 1
cmp edx, edi
jae 0x7ac19b
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac190
mov ebx, ecx
or ebx, 1
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0xa4]
lock cmpxchg dword [edx], ebx
cmp eax, dword [esp + 0xa8]
je 0x7ac1cc
mov eax, dword [esp + 0xac]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, dword [esp + 0xa0]
or eax, ecx
mov ecx, dword [esp + 0xac]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x9c], edi
mov ebp, ecx
mov dword [esp + 0x98], ebx
movzx edi, word [ebx + 0x12]
mov dword [esp + 0x94], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac21c
cmp dword [esi + 0x48], 0
je 0x7ac215
mov eax, dword [esi + 0x40]
jmp 0x7ac21c
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x94]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac249
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x94]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x98]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac275
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac26a
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x98]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac29c
mov eax, dword [esp + 0x9c]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x9c]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov ebp, dword [esp + 0x11c]
mov dword [esp + 0x10], ebp
mov dword [esp + 0xc], 1
mov dword [esp + 8], 2
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.007ab4f0
jmp case.0x7ab60c.8
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.007acb70
jmp case.0x7ab60c.8
mov ebx, dword [ebx + 4]
mov dword [edi], ebx
jmp case.0x7ab9fb.72
mov dword [esp + 4], ebx
mov dword [esp], 0x89bfaa
call fcn.007a5da0
movzx eax, word [ebx + 6]
mov dword [esp + 0x90], edi
mov ebp, ecx
mov dword [esp + 0x8c], ebx
lea edi, [eax + 3]
mov dword [esp + 0x88], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac34a
cmp dword [esi + 0x48], 0
je 0x7ac343
mov eax, dword [esi + 0x40]
jmp 0x7ac34a
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x88]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac377
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x88]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x8c]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac3a3
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac398
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x8c]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac3ca
mov eax, dword [esp + 0x90]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x90]
mov dword [ecx], eax
jmp case.0x7ab60c.8
movzx eax, word [ebx + 0xa]
mov dword [esp + 0x84], edi
mov ebp, ecx
mov dword [esp + 0x80], ebx
lea edi, [eax + 4]
mov dword [esp + 0x7c], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac416
cmp dword [esi + 0x48], 0
je 0x7ac40f
mov eax, dword [esi + 0x40]
jmp 0x7ac416
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x7c]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac440
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x7c]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x80]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac469
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac45e
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x80]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac490
mov eax, dword [esp + 0x84]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x84]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x78], edi
mov ebp, ecx
mov dword [esp + 0x74], ebx
mov edi, dword [ebx + 8]
add edi, 4
mov dword [esp + 0x70], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac4d5
cmp dword [esi + 0x48], 0
je 0x7ac4ce
mov eax, dword [esi + 0x40]
jmp 0x7ac4d5
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x70]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac4ff
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x70]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x74]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac525
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac51a
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x74]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac546
mov eax, dword [esp + 0x78]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x78]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x6c], edi
mov ebp, ecx
mov dword [esp + 0x68], ebx
mov edi, dword [ebx + 4]
add edi, 2
mov dword [esp + 0x64], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac588
cmp dword [esi + 0x48], 0
je 0x7ac581
mov eax, dword [esi + 0x40]
jmp 0x7ac588
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x64]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac5b2
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x64]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x68]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac5d8
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac5cd
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x68]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac5f9
mov eax, dword [esp + 0x6c]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x6c]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x60], edi
mov ebp, ecx
mov dword [esp + 0x5c], ebx
mov edi, dword [ebx + 4]
add edi, 2
mov dword [esp + 0x58], edi
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac63b
cmp dword [esi + 0x48], 0
je 0x7ac634
mov eax, dword [esi + 0x40]
jmp 0x7ac63b
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x58]
lea eax, [edx + ecx*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac665
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.007a9710
mov edx, eax
mov ecx, dword [esp + 0x58]
lea eax, [edx + ecx*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x5c]
mov dword [edx], ebp
mov edx, 1
cmp edx, edi
jae 0x7ac68b
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x7ac680
mov ebx, ecx
or ebx, 1
mov eax, ebp
mov edx, dword [esp + 0x5c]
lock cmpxchg dword [edx], ebx
cmp eax, ebp
je 0x7ac6ac
mov eax, dword [esp + 0x60]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x60]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov ebp, ebx
cmp word [ebx + 0xc], 4
jne 0x7ac6cf
mov ebx, dword [ebx + 4]
mov dword [edi], ebx
jmp case.0x7ab9fb.72
mov eax, dword [ebx + 0x34]
add eax, 0x10
mov edx, dword [esp + 0x11c]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.007ab4f0
test eax, eax
je case.0x7ab60c.8
mov ebx, dword [edi]
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.00798b5b
mov edx, dword [ebp + 0x3c]
mov ecx, dword [ebx + 0x3c]
mov eax, dword [ebp + 0x34]
lea eax, [ebp + eax*4 + 0x40]
cmp eax, edx
jbe case.0x7ab60c.8
mov eax, dword [edx]
add edx, 4
mov dword [ecx], eax
add ecx, 4
mov eax, dword [ebp + 0x34]
lea eax, [ebp + eax*4 + 0x40]
cmp eax, edx
ja 0x7ac723
jmp case.0x7ab60c.8
mov dword [esp + 0x54], edi
mov edi, ecx
mov dword [esp + 0x50], ebx
mov ebp, 5
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac76a
cmp dword [esi + 0x48], 0
je 0x7ac763
mov eax, dword [esi + 0x40]
jmp 0x7ac76a
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac790
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x50]
mov dword [edx], edi
mov edx, 1
cmp edx, 5
jae 0x7ac7b4
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 5
jb 0x7ac7a8
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x50]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7ac7d5
mov eax, dword [esp + 0x54]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x54]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x4c], edi
mov edi, ecx
mov dword [esp + 0x48], ebx
mov ebp, 4
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac812
cmp dword [esi + 0x48], 0
je 0x7ac80b
mov eax, dword [esi + 0x40]
jmp 0x7ac812
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac838
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x48]
mov dword [edx], edi
mov edx, 1
cmp edx, 4
jae 0x7ac85c
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 4
jb 0x7ac850
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x48]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7ac87d
mov eax, dword [esp + 0x4c]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x4c]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x44], edi
mov edi, ecx
mov dword [esp + 0x40], ebx
mov ebp, 4
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac8ba
cmp dword [esi + 0x48], 0
je 0x7ac8b3
mov eax, dword [esi + 0x40]
jmp 0x7ac8ba
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac8e0
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x40]
mov dword [edx], edi
mov edx, 1
cmp edx, 4
jae 0x7ac904
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 4
jb 0x7ac8f8
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x40]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7ac925
mov eax, dword [esp + 0x44]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x44]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x3c], edi
mov edi, ecx
mov dword [esp + 0x38], ebx
mov ebp, 0x43
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7ac962
cmp dword [esi + 0x48], 0
je 0x7ac95b
mov eax, dword [esi + 0x40]
jmp 0x7ac962
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7ac988
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x38]
mov dword [edx], edi
mov edx, 1
cmp edx, 0x43
jae 0x7ac9ac
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 0x43
jb 0x7ac9a0
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x38]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7ac9cd
mov eax, dword [esp + 0x3c]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x3c]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x34], edi
mov edi, ecx
mov dword [esp + 0x30], ebx
mov ebp, 4
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7aca0a
cmp dword [esi + 0x48], 0
je 0x7aca03
mov eax, dword [esi + 0x40]
jmp 0x7aca0a
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7aca30
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x30]
mov dword [edx], edi
mov edx, 1
cmp edx, 4
jae 0x7aca54
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 4
jb 0x7aca48
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x30]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7aca75
mov eax, dword [esp + 0x34]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
jmp case.0x7ab60c.8
mov dword [esp + 0x2c], edi
mov edi, ecx
mov dword [esp + 0x28], ebx
mov ebp, 4
mov eax, dword [esp + 0x11c]
cmp dword [esi + 0x40], eax
jbe 0x7acab2
cmp dword [esi + 0x48], 0
je 0x7acaab
mov eax, dword [esi + 0x40]
jmp 0x7acab2
mov dword [esi + 0x44], 1
mov eax, dword [eax + 4]
shl eax, 6
lea ebx, [eax + esi + 0x80]
mov edx, dword [ebx + 0xc]
lea eax, [edx + ebp*4]
cmp eax, dword [ebx + 0x10]
jbe 0x7acad8
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.007a9710
mov edx, eax
lea eax, [edx + ebp*4]
mov dword [ebx + 0xc], eax
mov ecx, edx
mov ebx, dword [esp + 0x28]
mov dword [edx], edi
mov edx, 1
cmp edx, 4
jae 0x7acafc
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, 4
jb 0x7acaf0
mov ebx, ecx
or ebx, 1
mov eax, edi
mov edx, dword [esp + 0x28]
lock cmpxchg dword [edx], ebx
cmp eax, edi
je 0x7acb1a
mov eax, dword [esp + 0x2c]
call fcn.007ab5c3
jmp case.0x7ab60c.8
mov eax, ecx
or eax, 0
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
jmp case.0x7ab60c.8
movzx eax, word [ecx - 4]
mov dword [esp + 4], eax
mov dword [esp], 0x89bfc8
call fcn.007a5da0
add esp, 0x120
pop ebx
pop edi
pop ebp
ret