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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x178
mov esi, ecx
mov dword [esp + 0x74], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xec], 0
mov dword [esp + 0xf4], 0
mov dword [esp + 0xfc], 0
mov dword [esp + 0x104], 0
mov dword [esp + 0x10c], 0
mov dword [esp + 0x114], 0
mov dword [esp + 0x11c], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x13c], 0
mov dword [esp + 0x144], 0
mov dword [esp + 0x14c], 0
mov dword [esp + 0x154], 0
mov dword [esp + 0x15c], 0
mov dword [esp + 0x164], 0
mov dword [esp + 0x16c], 0
mov cl, 1
xor eax, eax
mov edi, edx
lock cmpxchg byte [esi], cl
je 0x4471be
mov ecx, esi
call fcn.004101e0
lea eax, [esi + 0x10]
mov ebx, dword [ebp + 8]
mov ecx, dword [esi + 0x14]
mov dword [esp], esi
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x10]
mov edx, ebx
cmp edi, eax
sbb edx, ecx
cmovb ebx, ecx
cmovb edi, eax
lea eax, [esi + 0x18]
mov dword [esp + 0x2c], ebx
xor ebx, ebx
mov dword [esp + 0x30], edi
mov dword [esp + 8], eax
mov dword [esp + 0x28], ebx
mov eax, dword [esp]
mov edi, dword [esp + 0x34]
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x44729e
mov eax, dword [ecx]
mov edx, dword [esp]
mov dword [edx + 0x1c], eax
lea edx, [eax + 4]
test eax, eax
cmove edx, dword [esp + 8]
mov dword [edx], 0
mov dword [ecx], 0
mov dword [ecx + 4], 0
movq xmm0, qword [ecx + 0x18]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
and edx, eax
cmp edx, 0xffffffff
je 0x4471f2
pcmpeqd xmm0, xmm0
mov byte [ecx + 0x2c], 0
movq qword [ecx + 0x18], xmm0
mov eax, dword [ecx + 0x28]
nop word cs:[eax + eax]
nop dword [eax]
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x28], edx
jne 0x447260
test eax, eax
jne 0x4471f2
mov edi, dword [ecx + 0x20]
mov esi, dword [ecx + 0x24]
mov dword [ecx + 0x20], 0
lock and dword [ecx + 0x28], 0xfffffffd
test edi, edi
je 0x4471f2
jmp 0x447559
mov eax, dword [esp]
mov ecx, dword [eax + 0x1c]
test ecx, ecx
jne 0x447204
lea ecx, [esp + 0x58]
mov edx, edi
call fcn.00446a60
mov eax, dword [esp + 0x58]
or eax, dword [esp + 0x5c]
je 0x447601
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x30], eax
mov dword [esp + 0xc], eax
sbb edx, ecx
jb 0x447601
mov esi, ecx
mov ecx, dword [esp]
mov eax, dword [esp + 0x68]
mov edx, dword [ecx + 0x28]
cmp eax, edx
jae 0x4476ee
mov ecx, dword [ecx + 0x24]
xor edi, edi
mov edx, 1
mov ebx, 1
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x6c]
shld edi, edx, cl
shl ebx, cl
test cl, 0x20
mov edx, 0
cmovne edi, ebx
cmovne ebx, edx
mov edx, dword [esp + 4]
imul eax, eax, 0x210
not ebx
not edi
and dword [edx + eax + 0x200], ebx
and dword [edx + eax + 0x204], edi
cmp ecx, 0x3f
ja 0x4476f5
add edx, eax
mov edi, dword [edx + ecx*8 + 4]
mov dword [edx + ecx*8], 0
mov dword [edx + ecx*8 + 4], 0
test edi, edi
jne 0x44739d
mov ebx, dword [esp + 0xc]
jmp 0x447528
xor edx, edx
mov ecx, eax
mov edi, 1
mov ebx, dword [esp + 4]
shld edx, edi, cl
shl edi, cl
mov ecx, dword [esp + 0x50]
test al, 0x20
mov eax, 0
cmovne edx, edi
cmovne edi, eax
or dword [ebx + ecx + 0x200], edi
or dword [ebx + ecx + 0x204], edx
mov edi, dword [esp + 0x54]
test edi, edi
je 0x447520
mov eax, dword [edi]
test eax, eax
je 0x4473aa
mov dword [eax + 4], 0
mov dword [edi], 0
mov dword [esp + 0x54], eax
mov dword [edi + 4], 0
movq xmm0, qword [edi + 0x18]
movd eax, xmm0
pshufd xmm0, xmm0, 0x55
movd edx, xmm0
nop dword [eax]
cmp eax, 0xfffffffe
mov ecx, edx
sbb ecx, 0xffffffff
jae 0x447703
cmp dword [esp + 0xc], eax
mov ecx, esi
sbb ecx, edx
jb 0x447440
mov ecx, 0xffffffff
mov ebx, 0xfffffffe
lock cmpxchg8b qword [edi + 0x18]
jne 0x4473d0
pcmpeqd xmm0, xmm0
movq qword [edi + 8], xmm0
mov dword [esp + 0x10], edi
mov eax, dword [esp + 8]
mov eax, dword [eax]
cmp eax, edi
je 0x44774c
test eax, eax
mov dword [edi + 4], eax
mov dword [edi], 0
je 0x447423
mov dword [eax], edi
mov eax, dword [esp]
mov dword [eax + 0x18], edi
cmp dword [eax + 0x1c], 0
jne 0x447391
mov eax, dword [esp]
mov dword [eax + 0x1c], edi
jmp 0x447391
movd xmm0, eax
xor eax, dword [esp + 0xc]
movd xmm1, edx
xor edx, esi
mov ecx, edx
punpckldq xmm0, xmm1
movq qword [edi + 8], xmm0
or eax, 0x3f
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
mov ecx, dword [esp]
xor al, 0x3e
movzx eax, al
imul eax, eax, 0x2b
mov edx, dword [ecx + 0x28]
shr eax, 8
cmp edx, eax
jbe 0x4476d9
mov ecx, dword [ecx + 0x24]
imul ebx, eax, 0x210
mov dword [esp + 4], ecx
movq xmm0, qword [edi + 8]
mov ecx, dword [esp + 4]
mov dword [esp + 0x50], ebx
mov ecx, dword [ecx + ebx + 0x208]
movd edx, xmm0
pshufd xmm0, xmm0, 0x55
mov dword [esp + 0x10], edi
movd eax, xmm0
add ecx, ecx
lea ecx, [ecx + ecx*2]
shrd edx, eax, cl
shr eax, cl
test cl, 0x20
mov ecx, dword [esp + 4]
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 0x44773a
test edx, edx
mov dword [edi + 4], edx
mov dword [edi], 0
je 0x44750b
mov dword [edx], edi
mov dword [ecx], edi
cmp dword [ecx + 4], 0
jne 0x447360
mov dword [ecx + 4], edi
jmp 0x447360
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], ebx
mov edx, esi
mov ecx, dword [edi]
mov eax, dword [edi + 4]
cmp ebx, ecx
sbb edx, eax
jb 0x447777
cmp ecx, ebx
sbb eax, esi
jae 0x447290
mov dword [edi], ebx
mov dword [edi + 4], esi
jmp 0x447290
mov ebx, dword [esp + 0x28]
cmp ebx, 0x1f
ja 0x4477b7
mov eax, dword [esp + ebx*8 + 0x74]
test eax, eax
je 0x44757a
mov eax, dword [eax + 0xc]
push dword [esp + ebx*8 + 0x78]
call eax
add esp, 4
mov dword [esp + ebx*8 + 0x74], edi
mov dword [esp + ebx*8 + 0x78], esi
inc ebx
cmp ebx, 0x20
jne 0x4471ee
mov ecx, dword [esp]
mov al, 1
xor edx, edx
lock cmpxchg byte [ecx], dl
je 0x4475a1
mov ecx, dword [esp]
call fcn.0040ff10
mov esi, 0xffffffe0
nop word cs:[eax + eax]
test esi, esi
je 0x4475e1
mov ecx, dword [esp + esi*8 + 0x174]
mov eax, dword [esp + esi*8 + 0x178]
mov dword [esp + esi*8 + 0x174], 0
test ecx, ecx
je 0x4477e3
mov ecx, dword [ecx + 4]
inc esi
push eax
call ecx
add esp, 4
jmp 0x4475b0
mov ecx, dword [esp]
xor eax, eax
mov dl, 1
xor ebx, ebx
lock cmpxchg byte [ecx], dl
je 0x4471ee
mov ecx, dword [esp]
call fcn.004101e0
jmp 0x4471ee
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], esi
mov edx, ebx
mov ecx, dword [edi]
mov eax, dword [edi + 4]
cmp esi, ecx
sbb edx, eax
jb 0x447777
cmp ecx, esi
sbb eax, ebx
jae 0x44762d
mov dword [edi], esi
mov dword [edi + 4], ebx
lea ecx, [esp + 0x38]
mov edx, edi
call fcn.00446a60
mov eax, dword [esp + 0x38]
or eax, dword [esp + 0x3c]
je 0x447661
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov edi, 1
cmp edx, 1
mov esi, edx
adc esi, 0
test eax, eax
cmovne edi, edx
cmove edi, esi
jmp 0x447665
xor edi, edi
xor eax, eax
mov ecx, dword [esp]
xor edx, edx
mov dword [ecx + 0xc], eax
mov dword [ecx + 8], edi
mov al, 1
lock cmpxchg byte [ecx], dl
je 0x44767d
call fcn.0040ff10
mov edi, dword [esp + 0x28]
cmp edi, 0x21
jae 0x4477cd
shl edi, 3
lea esi, [esp + 0x74]
nop word cs:[eax + eax]
nop dword [eax + eax]
test edi, edi
je 0x4476c8
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esi], 0
test ecx, ecx
je 0x44776b
mov ecx, dword [ecx + 4]
add esi, 8
add edi, 0xfffffff8
push eax
call ecx
add esp, 4
jmp 0x4476a0
lea ecx, [esp + 0x74]
call fcn.00447840
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0x469948
mov ecx, eax
push esi
call fcn.00407200
add esp, 4
jmp 0x4477e1
mov esi, 0x469988
jmp 0x4476de
mov esi, 0x4698bc
mov edx, 0x40
mov eax, ecx
jmp 0x4476de
mov edx, 0x46982c
xor edi, edi
mov eax, str.Index_out_of_bounds
mov esi, 1
lea ecx, [esp + 0x38]
mov dword [esp + 0x38], 0x4697bc
mov dword [ecx + 4], esi
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edi
call fcn.00407170
jmp 0x4477e1
lea eax, [esp + 0x38]
lea edx, [esp + 0x10]
mov dword [esp + 0x38], 0
jmp 0x447760
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], 0
lea eax, [esp + 0x38]
lea edx, [esp + 0x10]
push eax
call fcn.00447bc0
add esp, 4
jmp 0x4477e1
mov ecx, 0x469a88
call fcn.00408ba0
jmp 0x4477e1
lea eax, [esp + 0x20]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], 0x40da90
mov dword [esp + 0x38], 0x469968
mov edx, 0x469978
mov esi, 2
lea ecx, [esp + 0x38]
mov edi, 2
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0x40da90
lea eax, [esp + 0x10]
jmp 0x447720
mov edx, 0x20
mov ecx, ebx
push 0x469a58
call fcn.00407200
add esp, 4
jmp 0x4477e1
mov edx, 0x20
mov ecx, edi
push 0x469a78
call fcn.00407aa0
add esp, 4
ud2
mov ecx, 0x469a68
jmp 0x447770