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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x198
mov esi, esp
mov dword [esi + 0x180], ebp
mov dword [esi + 0x184], esp
mov dword [esi + 0x190], 0xffffffff
mov dword [esi + 0x18c], 0x539e20
lea eax, [esi + 0x188]
mov bl, 1
mov edi, dword fs:[0]
mov dword [esi + 0x188], edi
mov dword fs:[0], eax
mov dword [esi + 0x80], 0
mov dword [esi + 0x88], 0
mov dword [esi + 0x90], 0
mov dword [esi + 0x98], 0
mov dword [esi + 0xa0], 0
mov dword [esi + 0xa8], 0
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb8], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0xc8], 0
mov dword [esi + 0xd0], 0
mov dword [esi + 0xd8], 0
mov dword [esi + 0xe0], 0
mov dword [esi + 0xe8], 0
mov dword [esi + 0xf0], 0
mov dword [esi + 0xf8], 0
mov dword [esi + 0x100], 0
mov dword [esi + 0x108], 0
mov dword [esi + 0x110], 0
mov dword [esi + 0x118], 0
mov dword [esi + 0x120], 0
mov dword [esi + 0x128], 0
mov dword [esi + 0x130], 0
mov dword [esi + 0x138], 0
mov dword [esi + 0x140], 0
mov dword [esi + 0x148], 0
mov dword [esi + 0x150], 0
mov dword [esi + 0x158], 0
mov dword [esi + 0x160], 0
mov dword [esi + 0x168], 0
mov dword [esi + 0x170], 0
mov dword [esi + 0x178], 0
xor eax, eax
lock cmpxchg byte [ecx], bl
mov dword [esi + 0xc], ecx
je 0x529aaf
mov dword [esi + 0x190], 0
mov dword [esi + 0x38], edx
call fcn.0053e0c0
mov edx, dword [esi + 0x38]
mov ecx, dword [esi + 0xc]
mov ebx, dword [ecx + 0x10]
mov eax, dword [ebp + 8]
mov edi, dword [ecx + 0x14]
mov dword [esi + 0x10], 0
mov dword [esi + 8], ebx
cmp edx, ebx
mov ebx, eax
sbb ebx, edi
lea ebx, [ecx + 0x10]
cmovb edx, dword [esi + 8]
cmovb eax, edi
mov dword [esi + 0x18], ebx
mov dword [esi + 0x60], eax
lea eax, [ecx + 0x18]
mov dword [esi + 0x3c], eax
mov dword [esi + 0x38], edx
mov ebx, dword [esi + 0xc]
mov edx, dword [esi + 0x18]
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x529b70
mov eax, dword [ecx]
lea edi, [eax + 4]
test eax, eax
mov dword [ebx + 0x1c], eax
cmove edi, dword [esi + 0x3c]
mov dword [edi], 0
mov dword [ecx], 0
mov dword [ecx + 4], 0
movq xmm0, qword [ecx + 0x18]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd edi, xmm0
and edi, eax
cmp edi, 0xffffffff
je 0x529ae7
pcmpeqd xmm0, xmm0
mov byte [ecx + 0x2c], 0
movq qword [ecx + 0x18], xmm0
mov eax, dword [ecx + 0x28]
nop dword [eax]
mov edi, eax
or edi, 2
lock cmpxchg dword [ecx + 0x28], edi
jne 0x529b40
test eax, eax
jne 0x529ae7
mov eax, dword [ecx + 0x20]
mov edi, dword [ecx + 0x24]
mov dword [ecx + 0x20], 0
lock and dword [ecx + 0x28], 0xfffffffd
test eax, eax
je 0x529ae7
jmp 0x529e52
mov dword [esi + 0x190], 1
jmp 0x529b8b
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
jne 0x529af2
lea ecx, [esi + 0x68]
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
call fcn.005290e0
mov eax, dword [esi + 0x68]
mov edi, dword [esi + 0x38]
mov ebx, dword [esi + 0x60]
pcmpeqd xmm2, xmm2
or eax, dword [esi + 0x6c]
je 0x529f59
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x74]
mov edx, ebx
cmp edi, eax
mov dword [esi + 0x14], eax
mov dword [esi + 8], ecx
sbb edx, ecx
jb 0x529f59
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x78]
mov edx, dword [eax + 0x28]
cmp ecx, edx
jae 0x52a079
mov dword [esi + 0x1c], ecx
mov ecx, dword [esi + 0x7c]
xor edx, edx
mov edi, 1
mov ebx, 0
mov eax, dword [eax + 0x24]
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
cmovne edi, ebx
imul ebx, dword [esi + 0x1c], 0x210
not edi
not edx
and dword [eax + ebx + 0x200], edi
and dword [eax + ebx + 0x204], edx
cmp ecx, 0x40
jae 0x52a08f
add eax, ebx
mov edx, dword [eax + ecx*8 + 4]
mov dword [eax + ecx*8], 0
mov dword [eax + ecx*8 + 4], 0
test edx, edx
jne 0x529c8a
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x14]
mov eax, dword [esi + 8]
jmp 0x529e16
xor edx, edx
mov ecx, eax
mov edi, 1
shld edx, edi, cl
shl edi, cl
test al, 0x20
mov eax, 0
mov ecx, dword [esi + 0x5c]
cmovne edx, edi
cmovne edi, eax
mov eax, dword [esi + 0x64]
or dword [eax + ecx + 0x204], edx
or dword [eax + ecx + 0x200], edi
mov edx, dword [esi + 0x1c]
test edx, edx
je 0x529e10
mov eax, dword [edx]
mov edi, edx
test eax, eax
je 0x529c99
mov dword [eax + 4], 0
mov dword [edi], 0
mov dword [esi + 0x1c], eax
mov dword [edi + 4], 0
movq xmm0, qword [edi + 0x18]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
nop dword [eax + eax]
cmp eax, 0xfffffffe
mov ecx, edx
sbb ecx, 0xffffffff
jae 0x52a0aa
cmp dword [esi + 0x14], eax
mov ecx, dword [esi + 8]
sbb ecx, edx
jb 0x529d30
mov ecx, 0xffffffff
mov ebx, 0xfffffffe
lock cmpxchg8b qword [edi + 0x18]
jne 0x529cc0
movq qword [edi + 8], xmm2
mov dword [esi + 0x40], edi
mov eax, dword [esi + 0x3c]
mov eax, dword [eax]
cmp eax, edi
je 0x52a116
test eax, eax
mov dword [edi + 4], eax
mov dword [edi], 0
je 0x529d0d
mov dword [eax], edi
mov ebx, dword [esi + 0xc]
mov edx, dword [esi + 0x1c]
mov dword [ebx + 0x18], edi
cmp dword [ebx + 0x1c], 0
jne 0x529c82
mov dword [ebx + 0x1c], edi
jmp 0x529c82
movd xmm0, eax
xor eax, dword [esi + 0x14]
movd xmm1, edx
xor edx, dword [esi + 8]
punpckldq xmm0, xmm1
movq qword [edi + 8], xmm0
or eax, 0x3f
mov ecx, edx
cmp eax, 0xfffffffe
sbb ecx, 0xf
mov ecx, 0xfffffffe
cmovae eax, ecx
mov ecx, 0xf
cmovae edx, ecx
bsr eax, eax
xor eax, 0x1f
bsr ecx, edx
or al, 0x20
xor ecx, 0x1f
test edx, edx
movzx eax, al
cmovne eax, ecx
xor al, 0x3e
movzx eax, al
imul ecx, eax, 0x2b
mov eax, dword [esi + 0xc]
shr ecx, 8
mov edx, dword [eax + 0x28]
cmp edx, ecx
jbe 0x52a059
mov ebx, dword [eax + 0x24]
imul eax, ecx, 0x210
mov dword [esi + 0x5c], eax
movq xmm0, qword [edi + 8]
mov eax, dword [ebx + eax + 0x208]
mov dword [esi + 0x64], ebx
mov dword [esi + 0x40], edi
movd edx, xmm0
pshufd xmm0, xmm0, 0x55
add eax, eax
lea ecx, [eax + eax*2]
movd eax, xmm0
shrd edx, eax, cl
shr eax, cl
test cl, 0x20
mov ecx, ebx
mov ebx, dword [esi + 0x5c]
cmove eax, edx
mov edx, eax
and edx, 0x3f
add ebx, ecx
lea ecx, [ebx + edx*8]
mov edx, dword [ebx + edx*8]
cmp edx, edi
je 0x52a0ed
test edx, edx
mov dword [edi + 4], edx
mov dword [edi], 0
je 0x529df5
mov dword [edx], edi
mov dword [ecx], edi
mov ebx, dword [esi + 0xc]
cmp dword [ecx + 4], 0
jne 0x529c50
mov dword [ecx + 4], edi
jmp 0x529c50
mov edi, dword [esi + 0x70]
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x54], eax
mov dword [esi + 0x50], edi
mov dword [esi + 8], eax
mov edx, edi
mov eax, dword [ecx + 4]
mov ecx, dword [ecx]
cmp edi, ecx
mov edi, dword [esi + 8]
sbb edi, eax
jb 0x52a155
cmp ecx, edx
mov ecx, dword [esi + 8]
mov edi, edx
mov edx, dword [esi + 0x18]
sbb eax, ecx
jae 0x529b80
mov dword [edx], edi
mov dword [edx + 4], ecx
jmp 0x529b80
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x14], edi
mov dword [esi + 8], eax
cmp ecx, 0x1f
ja 0x52a1b1
mov eax, dword [esi + ecx*8 + 0x80]
mov dword [esi + 0x10], ecx
test eax, eax
je 0x529e8f
mov ecx, dword [esi + 0x10]
mov eax, dword [eax + 0xc]
mov dword [esi + 0x190], 3
mov ecx, dword [esi + ecx*8 + 0x84]
push ecx
call eax
add esp, 4
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov dword [esi + ecx*8 + 0x80], eax
mov dword [esi + ecx*8 + 0x84], edx
inc ecx
cmp ecx, 0x20
mov dword [esi + 0x10], ecx
jne 0x529ae1
mov ecx, dword [esi + 0xc]
mov al, 1
xor edx, edx
lock cmpxchg byte [ecx], dl
je 0x529ed6
mov ecx, dword [esi + 0xc]
mov byte [esi + 7], 0
mov dword [esi + 0x190], 1
call fcn.0053dda0
xor edx, edx
nop dword [eax + eax]
cmp edx, 0x20
je 0x529f26
mov ecx, dword [esi + edx*8 + 0x80]
mov eax, dword [esi + edx*8 + 0x84]
mov dword [esi + edx*8 + 0x80], 0
mov dword [esi + 0x190], 1
test ecx, ecx
je 0x52a236
mov ecx, dword [ecx + 4]
inc edx
mov byte [esi + 7], 0
mov dword [esi + 8], edx
push eax
call ecx
mov edx, dword [esi + 8]
add esp, 4
jmp 0x529ee0
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x10], 0
xor eax, eax
mov dl, 1
lock cmpxchg byte [ecx], dl
je 0x529ae1
mov ecx, dword [esi + 0xc]
mov byte [esi + 7], 0
mov dword [esi + 0x190], 1
call fcn.0053e0c0
jmp 0x529ae1
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x54], ebx
mov dword [esi + 0x50], edi
mov edx, ebx
mov eax, dword [ecx + 4]
mov ecx, dword [ecx]
cmp edi, ecx
sbb edx, eax
jb 0x52a1cf
cmp ecx, edi
sbb eax, ebx
jae 0x529f81
mov eax, dword [esi + 0x18]
mov dword [eax], edi
mov dword [eax + 4], ebx
mov edx, dword [esi + 0x18]
lea ecx, [esi + 0x20]
mov byte [esi + 7], 1
call fcn.005290e0
mov eax, dword [esi + 0x20]
or eax, dword [esi + 0x24]
je 0x529fb5
mov edx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
mov ecx, 1
cmp edx, 1
mov edi, edx
adc edi, 0
test eax, eax
cmovne ecx, edx
cmove ecx, edi
jmp 0x529fb9
xor ecx, ecx
xor eax, eax
mov edx, dword [esi + 0xc]
mov dword [edx + 8], ecx
mov dword [edx + 0xc], eax
xor ecx, ecx
mov al, 1
lock cmpxchg byte [edx], cl
je 0x529fd8
mov ecx, dword [esi + 0xc]
mov byte [esi + 7], 0
call fcn.0053dda0
mov ecx, dword [esi + 0x10]
cmp ecx, 0x21
jae 0x52a21e
lea eax, [esi + ecx*8 + 0x80]
lea edx, [esi + 0x80]
mov dword [esi + 0x14], eax
nop word cs:[eax + eax]
nop
cmp edx, dword [esi + 0x14]
je 0x52a030
mov ecx, dword [edx]
mov eax, dword [edx + 4]
mov dword [edx], 0
test ecx, ecx
je 0x52a142
mov ecx, dword [ecx + 4]
add edx, 8
mov byte [esi + 7], 0
mov dword [esi + 8], edx
push eax
call ecx
mov edx, dword [esi + 8]
add esp, 4
jmp 0x52a000
lea ecx, [esi + 0x80]
mov dword [esi + 0x190], 0xffffffff
call fcn.0052a590
mov eax, dword [esi + 0x188]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
push 0x5a7a80
call fcn.0053bb10
add esp, 4
jmp 0x52a244
mov byte [esi + 7], 1
push 0x5a7ac0
call fcn.0053bb10
add esp, 4
jmp 0x52a244
mov byte [esi + 7], 1
mov edx, 0x40
push 0x5a79ec
call fcn.0053bb10
add esp, 4
jmp 0x52a244
lea ecx, [esi + 0x20]
mov edx, 0x5a7954
mov dword [esi + 0x20], 0x5a78dc
mov dword [esi + 0x24], 1
mov dword [esi + 0x30], 0
mov dword [esi + 0x28], str.Index_out_of_bounds
mov dword [esi + 0x2c], 0
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
call fcn.0053ba80
jmp 0x52a244
lea eax, [esi + 0x20]
mov dword [esi + 0x20], 0
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
lea edx, [esi + 0x40]
push eax
call fcn.00546d60
add esp, 4
jmp 0x52a244
mov ecx, dword [esi + 0x3c]
lea eax, [esi + 0x20]
mov dword [esi + 0x20], 0
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
lea edx, [esi + 0x40]
push eax
call fcn.00546d60
add esp, 4
jmp 0x52a244
mov ecx, 0x5a7bc8
mov byte [esi + 7], 0
call fcn.0053bf10
jmp 0x52a244
mov eax, dword [esi + 0x18]
lea edx, [esi + 0x50]
lea ecx, [esi + 0x40]
mov dword [esi + 0x20], 0x5a7aa0
mov dword [esi + 0x24], 2
mov dword [esi + 0x30], 0
mov byte [esi + 7], 1
mov dword [esi + 0x190], 1
mov dword [esi + 0x28], ecx
lea ecx, [esi + 0x20]
mov dword [esi + 0x2c], 2
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], 0x46cf20
mov dword [esi + 0x48], edx
mov edx, 0x5a7ab0
mov dword [esi + 0x4c], 0x46cf20
call fcn.0053ba80
jmp 0x52a244
mov dword [esi + 0x190], 2
mov edx, 0x20
push 0x5a7b98
call fcn.0053bb10
add esp, 4
jmp 0x52a244
mov eax, dword [esi + 0x18]
lea edx, [esi + 0x50]
lea ecx, [esi + 0x40]
mov dword [esi + 0x20], 0x5a7aa0
mov dword [esi + 0x24], 2
mov dword [esi + 0x30], 0
mov byte [esi + 7], 1
mov dword [esi + 0x28], ecx
lea ecx, [esi + 0x20]
mov dword [esi + 0x2c], 2
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], 0x46cf20
mov dword [esi + 0x48], edx
mov edx, 0x5a7ab0
mov dword [esi + 0x4c], 0x46cf20
call fcn.0053ba80
jmp 0x52a244
mov byte [esi + 7], 0
mov edx, 0x20
push 0x5a7bb8
call fcn.0053bb70
add esp, 4
jmp 0x52a244
mov ecx, 0x5a7ba8
mov byte [esi + 7], 0
call fcn.0053bf10
ud2