Function at 0x513a10
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xa8
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
xor edi, edi
or esi, 0xffffffff
push ebx
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0xa4], edi
mov dword [ebp - 0x98], edi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x50], esi
mov byte [ebp - 6], 0
call fcn.004fd350
mov edx, dword [ebx + 0xc]
mov byte [ebp - 5], 0
cmp edx, edi
jbe 0x513a5a
mov eax, dword [ebx + 0x38]
mov ecx, dword [eax]
jmp 0x513a5c
xor ecx, ecx
fldz
xor eax, eax
cmp edx, edi
jbe 0x513a82
fst qword [ecx + 0x58]
mov dword [ecx + 0x50], esi
mov edx, dword [ebx + 0xc]
inc eax
cmp eax, edx
jb 0x513a78
xor ecx, ecx
mov eax, edx
jmp 0x513a7e
mov ecx, dword [ebx + 0x38]
mov ecx, dword [ecx + eax*4]
cmp eax, edx
jb 0x513a64
mov ecx, dword [ebx + 0x10]
cmp ecx, edi
jbe 0x513a90
mov edx, dword [ebx + 0x14]
mov eax, dword [edx]
jmp 0x513a92
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edi
cmp ecx, edi
jbe 0x51404d
mov eax, dword [ebp - 0x10]
mov esi, dword [eax + 0x3c]
and esi, 0xfff00000
je 0x513f85
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x513adc
mov edx, dword [eax + 0xc]
mov eax, dword [edx]
mov eax, dword [eax + 8]
and eax, 0x180
xor edx, edx
or eax, edx
je 0x513adc
test dword [ebx + 0x372c], 0x2000
jne 0x513f85
cmp esi, 0x20400000
je 0x513af0
cmp esi, 0x20500000
jne 0x513f85
xor edx, edx
mov dword [ebp - 0x30], edx
test ecx, ecx
jbe 0x513f85
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 4]
add ecx, edx
lea esi, [eax + edx*4]
lea ecx, [eax + ecx*4]
xor edi, edi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x1c], edi
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
mov eax, 1
sub eax, edi
mov dword [ebp - 0x14], eax
mov eax, dword [edx]
mov edx, dword [ecx]
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x90], edx
mov ecx, dword [ebp + edi*4 - 0x94]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor edx, edx
or eax, edx
je 0x513f63
or eax, 0xffffffff
cmp dword [ecx + 0x24], eax
jne 0x513f63
cmp dword [ecx + 0x20], eax
jne 0x513f63
mov ecx, dword [ecx + 0x64]
mov eax, dword [ecx + 0x3c]
mov edx, dword [ebp - 0x10]
xor eax, dword [edx + 0x3c]
test eax, 0xfff00000
jne 0x513f63
mov esi, dword [ecx + 8]
xor edx, edx
test esi, esi
jbe 0x513ba1
mov eax, dword [ebp + edi*4 - 0x64]
mov ebx, dword [eax]
mov eax, dword [ecx + 0xc]
cmp dword [eax], ebx
je 0x513d15
inc edx
add eax, 4
cmp edx, esi
jb 0x513b8e
mov ebx, dword [ebp + 8]
or edx, 0xffffffff
mov eax, dword [ecx + 4]
lea ecx, [eax + edx*4]
add esi, edx
mov edx, dword [ecx]
lea eax, [eax + esi*4]
mov dword [ebp - 0x8c], edx
mov edx, dword [eax]
mov dword [ebp - 0x88], edx
mov esi, dword [ebp + edi*4 - 0x94]
cmp dword [esi + 0x7c], 1
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x28], 0xffffffff
mov byte [ebp - 0x15], 0
jne 0x513c2c
mov ecx, dword [ecx]
cmp ecx, edx
je 0x513c2c
mov ecx, dword [ebp - 0x14]
fstp st(0)
push 0
lea edx, [ebp - 0x84]
push edx
mov edx, dword [ebp + ecx*4 - 0x64]
lea eax, [ebp - 0x28]
push eax
mov eax, dword [edx]
push eax
mov ecx, ebx
call fcn.00512bf0
mov ecx, dword [ebp - 0x28]
push 0
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp + edi*4 - 0x64]
lea edx, [ebp - 0x84]
push edx
mov edx, dword [ecx]
lea eax, [ebp - 0x20]
push eax
push edx
mov ecx, ebx
call fcn.00512bf0
fldz
test eax, eax
setge byte [ebp - 0x15]
mov dword [ebp - 0x24], 2
mov ecx, dword [ebp - 0x24]
mov eax, 5
sub eax, ecx
mov ecx, dword [ebp + ecx*4 - 0x94]
mov dword [ebp - 0x38], eax
cmp ecx, 0xffffffff
je 0x513d1d
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x513d1d
mov eax, dword [ecx + 8]
and eax, 0x800
or eax, edx
je 0x513d1d
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + eax*4 - 0x94]
cmp edx, 0xffffffff
je 0x513d1d
mov eax, dword [edx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edi, edi
or eax, edi
je 0x513d1d
mov eax, dword [edx + 8]
and eax, 0x800
xor edx, edx
or eax, edx
je 0x513d1d
mov ebx, dword [ebp + 8]
mov eax, 1
add dword [ebx + 0x8b8], eax
add dword [ebx + 0x8bc], eax
cmp byte [ebx + 0x8b4], dl
je 0x513faa
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + ecx*4 - 0x94]
fld qword [eax + 0xa8]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp + edx*4 - 0x94]
fld qword [eax + 0xa8]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 0x3c]
and eax, 0xfff00000
cmp eax, 0x20400000
je 0x513fbc
cmp eax, 0x20500000
jne 0x513fc2
fstp st(2)
fmulp st(1)
jmp 0x513fc6
mov ebx, dword [ebp + 8]
jmp 0x513ba4
cmp dword [esi + 0x7c], 1
jne 0x513faa
mov edx, dword [ebp - 0x14]
mov edx, dword [ebp + edx*4 - 0x94]
cmp dword [edx + 0x64], 0xffffffff
je 0x513d43
mov eax, dword [edx + 0x68]
cmp eax, dword [esi + 0x68]
jae 0x513faa
cmp dword [edx + 0x24], 0xffffffff
jne 0x513faa
cmp dword [edx + 0x20], 0xffffffff
jne 0x513faa
cmp ecx, 0xffffffff
je 0x513e5f
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edi, edi
or eax, edi
je 0x513e5f
mov eax, dword [ecx + 8]
and eax, 0x800
or eax, edi
je 0x513e5f
cmp edx, 0xffffffff
je 0x513dab
mov eax, dword [edx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
or eax, edi
je 0x513dab
mov eax, dword [edx + 8]
and eax, 0x800
xor edx, edx
or eax, edx
jne 0x513e5f
fld qword [ecx + 0xa8]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 0x3c]
and ecx, 0xfff00000
cmp ecx, 0x20400000
jne 0x513dd4
fld st(1)
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x513fa8
cmp ecx, 0x20500000
jne 0x513ded
fld1
fucompp
fnstsw ax
test ah, 0x44
jnp 0x513faa
jmp 0x513def
fstp st(0)
mov ebx, dword [ebp + 8]
mov eax, 1
add dword [ebx + 0x8cc], eax
add dword [ebx + 0x8d0], eax
cmp byte [ebx + 0x8c8], 0
je 0x513faa
mov ecx, dword [ebp - 0x24]
mov ecx, dword [ebp + ecx*4 - 0x64]
mov edi, dword [ecx]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x64]
mov edx, dword [eax]
mov dword [eax], edi
mov dword [ecx], edx
mov ecx, dword [ebp - 0x10]
xor eax, eax
mov dword [esi + 0x84], eax
mov dword [esi + 0x88], eax
and dword [esi + 8], 0xffff87f0
mov edx, dword [esi + 0xc]
mov dword [esi + 0xc], edx
or eax, 0xffffffff
mov dword [esi + 0x50], eax
mov edx, dword [ecx + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [edx + ecx*4]
mov dword [edx + 0x50], eax
mov byte [ebp - 5], 1
jmp 0x513f60
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp + edx*4 - 0x64]
mov edx, dword [ebp + ecx*4 - 0x64]
mov ecx, dword [edx]
cmp ecx, dword [eax]
je 0x513faa
mov eax, dword [ebp + 8]
mov ecx, 1
add dword [eax + 0x8e0], ecx
add dword [eax + 0x8e4], ecx
cmp byte [eax + 0x8dc], 0
je 0x513faa
xor bl, bl
cmp byte [ebp - 0x15], bl
jne 0x513ecd
mov edx, dword [ebp - 0x28]
fstp st(0)
push 0
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x24]
lea eax, [ebp - 0x84]
push eax
mov eax, dword [ebp + edx*4 - 0x64]
mov eax, dword [eax]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [ebp + 8]
push eax
call fcn.00512bf0
fldz
test eax, eax
setge bl
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + ecx*4 - 0x64]
mov ecx, dword [edi]
cmp ecx, 0xffffffff
je 0x513efe
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x513efe
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
jne 0x513faa
test bl, bl
jne 0x513f13
mov eax, dword [ebp - 0x24]
mov edx, dword [edi]
mov eax, dword [ebp + eax*4 - 0x64]
cmp edx, dword [eax]
jne 0x513faa
mov ecx, dword [ebp - 0x38]
mov ecx, dword [ebp + ecx*4 - 0x64]
mov edi, dword [ecx]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x64]
mov edx, dword [eax]
mov dword [eax], edi
mov dword [ecx], edx
mov ecx, dword [ebp - 0x10]
xor eax, eax
mov dword [esi + 0x84], eax
mov dword [esi + 0x88], eax
and dword [esi + 8], 0xffff87f0
mov edx, dword [esi + 0xc]
mov dword [esi + 0xc], edx
or eax, 0xffffffff
mov dword [esi + 0x50], eax
mov edx, dword [ecx + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [edx + ecx*4]
mov dword [edx + 0x50], eax
mov byte [ebp - 5], 1
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0x1c]
inc edi
mov dword [ebp - 0x1c], edi
cmp edi, 2
jb 0x513b16
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 8]
inc edx
mov dword [ebp - 0x30], edx
cmp edx, ecx
jb 0x513afd
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x10]
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, eax
jb 0x514023
mov ecx, eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], ecx
jmp 0x51402c
fstp st(0)
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 4
jb 0x513c33
jmp 0x513f5d
fstp st(2)
faddp st(1)
jmp 0x513fc6
fstp st(1)
fstp st(0)
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp + ecx*4 - 0x64]
mov ecx, dword [edx]
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp + edi*4 - 0x64]
sub esp, 8
fstp qword [esp]
push 0x20
push 0
push 0
mov dword [eax], ecx
mov edx, dword [ebx + 0x366c]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + eax*4 - 0x64]
push 0
push edx
push ecx
push ebx
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov edx, dword [ebp - 0x10]
fldz
mov eax, dword [edx + 0xc]
mov ecx, dword [ebp - 0x30]
mov edx, dword [eax + ecx*4]
mov dword [edx + 0x50], 0xffffffff
mov byte [ebp - 5], 1
jmp 0x513f63
mov edx, dword [ebx + 0x14]
mov eax, dword [edx + ecx*4]
mov dword [ebp - 0x10], eax
cmp ecx, dword [ebx + 0x10]
jb 0x513aa0
cmp byte [ebp - 5], 0
je 0x51404d
push ebx
fstp st(0)
mov byte [ebp - 6], 1
mov byte [ebp - 5], 0
call fcn.004fd350
fldz
mov ecx, dword [ebx + 0x10]
test ecx, ecx
jbe 0x51405b
mov edx, dword [ebx + 0x14]
mov eax, dword [edx]
jmp 0x51405d
xor eax, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], 0
test ecx, ecx
jbe 0x51443d
mov eax, dword [ebp - 0x10]
mov edx, dword [eax + 0x3c]
and edx, 0xfff00000
je 0x51440c
mov ebx, eax
mov esi, dword [ebx + 8]
mov dword [ebp - 0x1c], esi
test esi, esi
je 0x5140b3
mov ecx, dword [ebx + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
and eax, 0x180
xor ecx, ecx
or eax, ecx
je 0x5140b3
mov eax, dword [ebp + 8]
test dword [eax + 0x372c], 0x2000
jne 0x51440c
cmp edx, 0x30000000
je 0x5140ca
cmp edx, 0x50600000
jne 0x51440c
mov ebx, dword [ebp - 0x10]
xor eax, eax
mov dword [ebp - 0x20], eax
test esi, esi
jbe 0x514209
mov ecx, dword [ebx + 4]
mov esi, dword [ecx + eax*4]
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor ecx, ecx
or eax, ecx
je 0x5141c6
or eax, 0xffffffff
cmp dword [esi + 0x24], eax
jne 0x5141c6
cmp dword [esi + 0x20], eax
jne 0x5141c6
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebx]
cmp eax, edx
jae 0x514128
mov ecx, dword [ebx + 4]
lea ecx, [ecx + eax*4]
cmp esi, dword [ecx]
je 0x514120
inc eax
add ecx, 4
cmp eax, edx
jb 0x514114
cmp eax, edx
jb 0x5141c6
mov edi, dword [esi + 0x64]
mov edx, edi
call fcn.0050b610
mov ecx, dword [edi + 0x3c]
and ecx, 0xfff00000
cmp ecx, 0x20400000
jne 0x514157
mov ecx, dword [edi + 4]
mov edi, dword [edi + 8]
mov edx, dword [ecx + eax*4]
add edi, eax
cmp edx, dword [ecx + edi*4]
jne 0x5141c6
mov esi, edx
jmp 0x5140dd
mov edx, dword [ebx + 0x3c]
and edx, 0xfff00000
cmp edx, 0x20500000
jne 0x5141c6
mov ecx, dword [edi + 4]
mov edx, dword [ecx + eax*4]
mov edi, dword [edi + 8]
fld qword [edx + 0xa8]
add edi, eax
mov ecx, dword [ecx + edi*4]
mov eax, dword [edx + 8]
fld qword [ecx + 0xa8]
and eax, 0x800
xor edi, edi
or eax, edi
je 0x5141a4
fxch st(1)
fcomp st(2)
fnstsw ax
test ah, 0x41
jne 0x5141a6
fstp st(0)
mov esi, ecx
jmp 0x5140dd
fstp st(1)
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
je 0x5141c4
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x5141c6
mov esi, edx
jmp 0x5140dd
fstp st(0)
mov ecx, dword [ebx + 4]
mov eax, dword [ebp - 0x20]
cmp dword [ecx + eax*4], esi
je 0x5141f7
mov ecx, dword [ebp + 8]
mov edx, 1
add dword [ecx + 0x980], edx
add dword [ecx + 0x984], edx
cmp byte [ecx + 0x97c], 0
je 0x5141f7
mov ecx, dword [ebx + 4]
mov dword [ecx + eax*4], esi
mov byte [ebp - 5], dl
mov ecx, dword [ebx + 8]
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], ecx
cmp eax, ecx
jb 0x5140d7
mov edx, dword [ebx + 0x3c]
and edx, 0xfff00000
cmp edx, 0x30000000
jne 0x51440c
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 8]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x1c], eax
test eax, eax
jbe 0x51440c
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor ecx, ecx
or eax, ecx
je 0x51439a
mov edx, dword [ebp - 0x24]
cmp dword [edx + 0x24], 0xffffffff
jne 0x51439a
mov eax, edx
cmp dword [eax + 0x20], 0xffffffff
jne 0x51439a
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ecx]
cmp eax, edx
jae 0x5142a0
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
lea ecx, [ecx + eax*4]
cmp esi, dword [ecx]
je 0x514298
inc eax
add ecx, 4
cmp eax, edx
jb 0x51428c
cmp eax, edx
jb 0x51439a
mov esi, dword [ebp - 0x24]
mov ebx, dword [esi + 0x64]
mov edx, ebx
call fcn.0050b610
mov edx, dword [ebx + 0x3c]
and edx, 0xfff00000
cmp edx, 0x20500000
jne 0x51439a
mov ecx, dword [ebx + 4]
fstp st(0)
mov edi, dword [ecx + eax*4]
fld qword [edi + 0xa8]
mov edx, dword [ebx + 8]
fstp qword [ebp - 0x8c]
add edx, eax
mov esi, dword [ecx + edx*4]
fld qword [edi + 0xc0]
fstp qword [ebp - 0x44]
mov ecx, edi
fld qword [edi + 0xc8]
fstp qword [ebp - 0x34]
fld qword [esi + 0xa8]
fstp qword [ebp - 0x3c]
fld qword [esi + 0xc0]
fstp qword [ebp - 0x84]
fld qword [esi + 0xc8]
fstp qword [ebp - 0x4c]
call fcn.0048b570
test al, al
je 0x514357
mov eax, dword [esi + 8]
and eax, 0x1000
xor ecx, ecx
or eax, ecx
je 0x514357
fldz
fcom qword [ebp - 0x8c]
fnstsw ax
test ah, 0x41
jne 0x514355
fcom qword [ebp - 0x84]
fnstsw ax
test ah, 5
jnp 0x51434d
fcom qword [ebp - 0x4c]
fnstsw ax
test ah, 0x41
jne 0x514355
mov dword [ebp - 0x24], esi
jmp 0x514248
fstp st(0)
mov ecx, esi
call fcn.0048b570
test al, al
je 0x514398
mov eax, dword [edi + 8]
and eax, 0x1000
xor ecx, ecx
or eax, ecx
je 0x514398
fldz
fcom qword [ebp - 0x3c]
fnstsw ax
test ah, 0x41
jne 0x51439a
fcom qword [ebp - 0x44]
fnstsw ax
test ah, 5
jnp 0x514390
fcom qword [ebp - 0x34]
fnstsw ax
test ah, 0x41
jne 0x51439a
mov dword [ebp - 0x24], edi
jmp 0x514248
fldz
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
cmp dword [eax + ecx*4], edx
je 0x5143f7
mov eax, dword [ebp + 8]
mov esi, 1
add dword [eax + 0x980], esi
add dword [eax + 0x984], esi
cmp byte [eax + 0x97c], 0
mov eax, dword [ebp - 0x10]
je 0x5143fa
mov esi, dword [eax + 4]
mov dword [esi + ecx*4], edx
mov edx, dword [eax + 8]
mov esi, dword [eax + 4]
lea edi, [edx + ecx]
mov ebx, dword [esi + edi*4]
lea edx, [ecx + edx*2]
mov edx, dword [esi + edx*4]
lea edi, [esi + edi*4]
mov dword [edi], edx
mov edx, dword [eax + 8]
mov esi, dword [eax + 4]
lea edx, [ecx + edx*2]
mov dword [esi + edx*4], ebx
mov byte [ebp - 5], 1
jmp 0x5143fa
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 8]
inc ecx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x1c], eax
cmp ecx, eax
jb 0x514236
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x10]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, ecx
jb 0x51442b
mov eax, ecx
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], eax
jmp 0x514434
mov ecx, dword [edx + 0x14]
mov ecx, dword [ecx + eax*4]
mov dword [ebp - 0x10], ecx
cmp eax, dword [edx + 0x10]
jb 0x51406f
cmp byte [ebp - 5], 0
je 0x514458
mov edx, dword [ebp + 8]
fstp st(0)
push edx
mov byte [ebp - 6], 1
mov byte [ebp - 5], 0
call fcn.004fd350
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x10]
test ecx, ecx
jbe 0x514469
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
jmp 0x51446b
xor eax, eax
mov edi, eax
mov dword [ebp - 0x10], edi
mov dword [ebp - 0xc], 0
test ecx, ecx
jbe 0x5148e4
mov esi, dword [edi + 0x3c]
and esi, 0xfff00000
je 0x51489c
mov edx, dword [edi + 8]
test edx, edx
je 0x5144bb
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
and eax, 0x180
xor ecx, ecx
or eax, ecx
je 0x5144bb
mov eax, dword [ebp + 8]
test dword [eax + 0x372c], 0x2000
jne 0x51489c
cmp esi, 0x30000000
jne 0x51489c
mov dword [ebp - 0x1c], 0
test edx, edx
jbe 0x51489c
mov edx, dword [ebp - 0x1c]
mov ecx, dword [edi + 4]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor edx, edx
or eax, edx
je 0x51488c
cmp dword [ecx + 0x24], 0xffffffff
jne 0x51488c
cmp dword [ecx + 0x20], 0xffffffff
jne 0x51488c
mov ebx, dword [ecx + 0x64]
mov edx, dword [ebx + 8]
xor eax, eax
mov dword [ebp - 0x14], ebx
test edx, edx
jbe 0x514524
mov esi, dword [ebx + 0xc]
cmp dword [esi], ecx
je 0x514540
inc eax
add esi, 4
cmp eax, edx
jb 0x514518
or edx, 0xffffffff
mov dword [ebp - 0x20], edx
mov eax, dword [ebx + 0x3c]
and eax, 0xfff00000
cmp eax, 0x10100000
jne 0x514547
mov eax, 1
jmp 0x514557
mov edx, eax
mov dword [ebp - 0x20], eax
jmp 0x51452a
cmp eax, 0x20500000
jne 0x51488c
mov eax, 2
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], 0
test eax, eax
jbe 0x51488c
mov dword [ebp - 0x38], 1
jmp 0x514578
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 4]
mov ebx, dword [ebx + 0x3c]
mov esi, eax
imul esi, dword [ebp - 0x28]
add esi, edx
mov esi, dword [ecx + esi*4]
and ebx, 0xfff00000
cmp ebx, 0x20500000
jne 0x5145e8
mov ebx, dword [ebp - 0x38]
imul ebx, eax
add ebx, edx
mov ecx, dword [ecx + ebx*4]
fld qword [ecx + 0xa8]
cmp ecx, 0xffffffff
je 0x5148b8
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x5148b8
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
je 0x5148b8
fcomp st(1)
fnstsw ax
test ah, 1
je 0x5148ba
mov eax, dword [edi + 8]
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [edi + 4]
lea edx, [ebx + eax*2]
cmp esi, dword [ecx + edx*4]
jne 0x514676
add eax, ebx
mov ecx, dword [ecx + eax*4]
fld qword [ecx + 0xa8]
cmp ecx, 0xffffffff
je 0x514674
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x514674
mov eax, dword [ecx + 8]
and eax, 0x800
or eax, edx
je 0x514674
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x514676
mov eax, dword [ebp + 8]
mov edx, 1
add dword [eax + 0x994], edx
add dword [eax + 0x998], edx
cmp byte [eax + 0x990], 0
je 0x5148ba
mov edx, dword [edi + 4]
mov dword [edx + ebx*4], esi
mov eax, dword [edi + 8]
mov edx, dword [edi + 4]
add eax, ebx
mov dword [edx + eax*4], esi
mov eax, dword [edi + 8]
lea edx, [ebx + eax*2]
mov eax, dword [edi + 4]
mov dword [eax + edx*4], ecx
jmp 0x514888
fstp st(0)
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor ecx, ecx
or eax, ecx
je 0x5148ba
cmp dword [esi + 0x24], 0xffffffff
jne 0x5148ba
cmp dword [esi + 0x20], 0xffffffff
jne 0x5148ba
mov ebx, dword [esi + 0x64]
mov eax, dword [ebx + 0x3c]
and eax, 0xfff00000
mov dword [ebp - 0x48], ebx
cmp eax, 0x30000000
jne 0x5148ba
mov edx, dword [ebx + 8]
xor eax, eax
test edx, edx
jbe 0x5146d2
mov ecx, dword [ebx + 0xc]
cmp dword [ecx], esi
je 0x514778
inc eax
add ecx, 4
cmp eax, edx
jb 0x5146c2
mov dword [ebp - 0x40], 0xffffffff
mov esi, dword [ebp - 0x40]
mov eax, edx
mov edx, dword [ebx + 4]
lea ecx, [eax + esi]
mov ecx, dword [edx + ecx*4]
fld qword [ecx + 0xa8]
lea eax, [esi + eax*2]
mov esi, dword [edx + eax*4]
mov eax, dword [ecx + 0xc]
fld qword [esi + 0xa8]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x88], eax
mov eax, edx
and eax, 8
xor edi, edi
or eax, edi
jne 0x514787
cmp ecx, 0xffffffff
je 0x5148b6
mov ecx, dword [ecx + 0x10]
mov ecx, dword [ecx + 8]
and ecx, 0x100
mov eax, ecx
or eax, edi
je 0x514748
mov eax, edx
and eax, 0x800
xor ebx, ebx
or eax, ebx
je 0x514745
fxch st(1)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x514780
fxch st(1)
mov ebx, dword [ebp - 0x48]
or ecx, edi
je 0x5148b6
and edx, 0x800
xor eax, eax
or edx, eax
je 0x5148b6
fxch st(1)
fcomp st(2)
fnstsw ax
test ah, 0x41
jne 0x5148b8
mov dword [ebp - 0x48], 1
jmp 0x514790
mov dword [ebp - 0x40], eax
jmp 0x5146d9
mov ebx, dword [ebp - 0x48]
fstp st(0)
jmp 0x514789
fstp st(1)
mov dword [ebp - 0x48], 0
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov eax, edx
mov dword [ebp - 0x88], ecx
and eax, 8
xor ecx, ecx
or eax, ecx
jne 0x514809
cmp esi, 0xffffffff
je 0x5148b8
mov esi, dword [esi + 0x10]
mov ecx, dword [esi + 8]
and ecx, 0x100
xor esi, esi
mov eax, ecx
or eax, esi
je 0x5147da
mov eax, edx
and eax, 0x800
xor edi, edi
or eax, edi
je 0x5147da
fcom st(1)
fnstsw ax
test ah, 0x41
jnp 0x514809
or ecx, esi
je 0x5148b8
and edx, 0x800
xor eax, eax
or edx, eax
je 0x5148b8
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x5148ba
mov ecx, 1
mov dword [ebp - 0x24], ecx
jmp 0x514817
fstp st(0)
mov dword [ebp - 0x24], 0
mov ecx, 1
mov eax, dword [ebp + 8]
add dword [eax + 0x9a8], ecx
add dword [eax + 0x9ac], ecx
cmp byte [eax + 0x9a4], 0
je 0x5148ba
cmp dword [ebp - 0x48], 0
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx + 8]
mov esi, dword [ebp - 0x1c]
mov eax, dword [edx + 4]
lea edi, [esi + ecx]
mov edi, dword [eax + edi*4]
lea ecx, [esi + ecx*2]
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebx + 4]
mov ebx, dword [ebp - 0x40]
mov ecx, dword [ecx + ebx*4]
mov dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x20]
jne 0x514865
mov eax, edi
mov ecx, dword [edx + 8]
mov ebx, dword [edx + 4]
add ecx, esi
cmp dword [ebp - 0x24], 0
mov dword [ebx + ecx*4], eax
je 0x514879
mov edi, dword [ebp - 0x20]
mov eax, dword [edx + 8]
mov edx, dword [edx + 4]
lea ecx, [esi + eax*2]
mov dword [edx + ecx*4], edi
mov edi, dword [ebp - 0x10]
mov byte [ebp - 5], 1
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, dword [edi + 8]
jb 0x5144d6
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x10]
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, eax
jb 0x5148d2
mov ecx, eax
xor edi, edi
mov dword [ebp - 0xc], ecx
jmp 0x5148d8
fstp st(1)
fstp st(0)
mov eax, dword [ebp - 0x28]
dec dword [ebp - 0x38]
mov edi, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x28], eax
cmp eax, dword [ebp - 0x30]
jb 0x514572
jmp 0x51488c
mov eax, dword [edx + 0x14]
mov edi, dword [eax + ecx*4]
mov dword [ebp - 0x10], edi
cmp ecx, dword [edx + 0x10]
jb 0x51447f
cmp byte [ebp - 5], 0
mov esi, dword [ebp + 8]
je 0x5148ff
push esi
fstp st(0)
mov byte [ebp - 6], 1
mov byte [ebp - 5], 0
call fcn.004fd350
fldz
mov ecx, dword [esi + 0x10]
test ecx, ecx
jbe 0x51490d
mov edx, dword [esi + 0x14]
mov eax, dword [edx]
jmp 0x51490f
xor eax, eax
mov ebx, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], 0
test ecx, ecx
jbe 0x514d28
mov edx, dword [ebp + 8]
mov esi, dword [ebx + 0x3c]
and esi, 0xfff00000
je 0x514cfc
xor ecx, ecx
cmp dword [ebx + 8], ecx
je 0x51495d
mov eax, dword [ebx + 0xc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
and eax, 0x180
or eax, ecx
je 0x51495d
test dword [edx + 0x372c], 0x2000
jne 0x514cfc
cmp esi, 0x10500000
jne 0x514cfc
or eax, 0xffffffff
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x1c], ecx
cmp dword [ebx], ecx
jbe 0x514cfc
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebx + 4]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor edx, edx
or eax, edx
je 0x514b73
cmp dword [ecx + 0x24], 0xffffffff
jne 0x514b73
cmp dword [ecx + 0x20], 0xffffffff
jne 0x514b73
mov edx, dword [ecx + 0x64]
mov eax, dword [edx + 0x3c]
and eax, 0xfff00000
mov dword [ebp - 0x30], edx
cmp eax, 0x20500000
jne 0x514b73
mov edi, dword [edx + 8]
xor eax, eax
test edi, edi
jbe 0x5149e2
mov esi, dword [edx + 0xc]
cmp dword [esi], ecx
je 0x514a84
inc eax
add esi, 4
cmp eax, edi
jb 0x5149d2
mov dword [ebp - 0x28], 0xffffffff
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x38], 1
mov ecx, dword [edx + 8]
imul ecx, eax
add ecx, dword [ebp - 0x28]
mov eax, dword [edx + 4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor esi, esi
or eax, esi
je 0x514b60
cmp dword [ecx + 0x24], 0xffffffff
jne 0x514b60
cmp dword [ecx + 0x20], 0xffffffff
jne 0x514b60
mov eax, dword [ecx + 0x64]
mov dword [ebp - 0x14], eax
mov eax, dword [eax + 0x3c]
and eax, 0xfff00000
cmp eax, 0x10600000
jne 0x514b60
cmp dword [ecx + 0x7c], 1
jne 0x514af4
mov edx, dword [ecx + 8]
mov eax, dword [ebp - 0x10]
mov edi, dword [ecx + 0xc]
mov dword [ebp - 0x5c], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp - 0x1c]
mov eax, dword [edx + eax*4]
mov eax, dword [eax + 0xc]
or eax, edi
and eax, 0x124
mov esi, eax
and esi, 0x100
xor edx, edx
xor ebx, ebx
or edx, esi
je 0x514a8c
mov eax, 0x100
jmp 0x514aae
mov dword [ebp - 0x28], eax
jmp 0x5149e9
mov esi, eax
and esi, 0x20
xor edx, edx
or edx, esi
je 0x514a9e
mov eax, 0x20
jmp 0x514aae
mov esi, eax
and esi, 4
xor edx, edx
or edx, esi
je 0x514ab0
mov eax, 4
xor ebx, ebx
xor edx, edx
and edi, 0x124
cmp edx, ebx
jne 0x514ac0
cmp edi, eax
je 0x514af4
mov edx, dword [ebp + 8]
mov esi, 1
add dword [edx + 0x8f4], esi
add dword [edx + 0x8f8], esi
cmp byte [edx + 0x8f0], 0
je 0x514af4
mov edx, dword [ecx + 8]
and dword [ecx + 0xc], 0xfffffedb
mov dword [ecx + 8], edx
or dword [ecx + 8], ebx
or dword [ecx + 0xc], eax
mov byte [ebp - 5], 1
mov eax, dword [ebp + 8]
test byte [eax + 0xad], 1
mov ebx, dword [ebp - 0x10]
je 0x514b5d
cmp dword [ebx + 8], 1
jne 0x514b5d
mov edx, dword [ebx + 0xc]
mov eax, dword [ebp - 0x1c]
mov eax, dword [edx + eax*4]
mov edx, dword [eax + 0xc]
and edx, 4
xor eax, eax
or eax, edx
je 0x514b5d
mov edi, dword [ebp - 0x14]
mov esi, dword [edi + 8]
xor eax, eax
test esi, esi
jbe 0x514b39
mov edx, dword [edi + 0xc]
cmp dword [edx], ecx
je 0x514b3c
inc eax
add edx, 4
cmp eax, esi
jb 0x514b2d
or eax, 0xffffffff
mov ecx, dword [edi + 4]
mov edx, dword [ecx + eax*4]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 8]
imul eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x28]
mov ecx, dword [edx + 4]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x48], eax
jmp 0x514b60
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x20]
dec dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 2
jb 0x5149f5
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebx]
jb 0x51497d
cmp dword [ebp - 0x40], 0xffffffff
je 0x514cfc
mov eax, dword [ebp + 8]
mov ecx, 1
add dword [eax + 0x8f4], ecx
add dword [eax + 0x8f8], ecx
cmp byte [eax + 0x8f0], 0
je 0x514cfc
push 0xffffffffffffffff
fstp st(0)
push 0xffffffffffffffff
push 0x50100004
lea ecx, [ebp - 0x80]
push ecx
mov edi, eax
push edi
call fcn.00508af0
mov esi, eax
test esi, esi
jl 0x515dd5
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0x10000001
lea edx, [ebp - 0x24]
push edx
push edi
call fcn.00508af0
mov esi, eax
test esi, esi
jl 0x515dd5
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x34]
mov edi, dword [ebp - 0x80]
mov dword [edi + 0x34], ecx
mov edx, dword [eax + 0x38]
mov ecx, dword [ebp - 0x24]
mov dword [edi + 0x38], edx
mov edx, dword [eax + 0x34]
mov dword [ecx + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [ecx + 0x38], eax
mov ecx, dword [edi + 4]
mov eax, dword [ebp - 0x40]
mov dword [ecx + 4], eax
mov edx, dword [edi + 4]
mov dword [edx], eax
mov ecx, dword [edi + 4]
mov eax, dword [ebp - 0x48]
mov dword [ecx + 0xc], eax
mov edx, dword [edi + 4]
mov dword [edx + 8], eax
xor ebx, ebx
jmp 0x514c30
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3688]
mov edx, dword [edi + 0xc]
sub esp, 8
fstp qword [esp]
push 0
push 0
push 0
push 0
push ecx
add edx, ebx
push edx
push eax
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov esi, dword [ebp - 0x10]
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
mov edx, dword [eax + 0x30]
mov ecx, dword [edi + 0xc]
mov ecx, dword [ebx + ecx]
mov dword [ecx + 0x30], edx
mov al, byte [eax + 0x34]
mov byte [ecx + 0x34], al
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx + ebx]
mov edx, dword [esi + 0xc]
mov ecx, dword [edx]
mov ecx, dword [ecx + 0xc]
and ecx, 0x124
or dword [eax + 0xc], ecx
mov edx, dword [edi + 0xc]
mov eax, dword [edx + ebx]
add ebx, 4
mov dword [eax + 0x64], edi
cmp ebx, 0x10
jb 0x514c30
mov ecx, dword [edi + 0xc]
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov ecx, dword [ecx + 8]
mov dword [edx], ecx
mov ecx, esi
mov edx, dword [ecx + 0xc]
mov edx, dword [edx]
mov esi, dword [eax + 0xc]
mov dword [esi], edx
mov edx, dword [eax + 0xc]
mov edx, dword [edx]
push 1
mov dword [edx + 0x64], eax
mov dword [ebp - 0x88], eax
push ecx
lea eax, [ebp - 0x8c]
push eax
mov dword [ebp - 0x8c], edi
mov edi, dword [ebp + 8]
push 2
call fcn.00508f00
mov esi, eax
test esi, esi
jl 0x515dd5
mov ecx, edi
push ecx
call fcn.004fd350
fldz
mov byte [ebp - 5], 1
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x10]
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, eax
jb 0x514d16
mov ecx, eax
xor ebx, ebx
mov dword [ebp - 0xc], ecx
jmp 0x514d1c
mov eax, dword [edx + 0x14]
mov ebx, dword [eax + ecx*4]
mov dword [ebp - 0x10], ebx
cmp ecx, dword [edx + 0x10]
jb 0x514926
cmp byte [ebp - 5], 0
je 0x514d43
mov ecx, dword [ebp + 8]
fstp st(0)
push ecx
mov byte [ebp - 6], 1
mov byte [ebp - 5], 0
call fcn.004fd350
fldz
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x10]
test ecx, ecx
jbe 0x514d54
mov edx, dword [ebx + 0x14]
mov eax, dword [edx]
jmp 0x514d56
xor eax, eax
mov esi, eax
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], 0
test ecx, ecx
jbe 0x514ee9
mov edx, dword [esi + 0x3c]
and edx, 0xfff00000
je 0x514ec0
cmp dword [esi + 8], 0
je 0x514da2
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
and eax, 0x180
xor ecx, ecx
or eax, ecx
je 0x514da2
test dword [ebx + 0x372c], 0x2000
jne 0x514ec0
cmp edx, 0x10400000
jne 0x514ec0
cmp dword [esi], 0
mov dword [ebp - 0x1c], 0
jbe 0x514ec0
mov edx, dword [ebp - 0x1c]
mov ecx, dword [esi + 4]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 2
xor edx, edx
or eax, edx
je 0x514eb1
cmp dword [ecx + 0x24], 0xffffffff
jne 0x514eb1
cmp dword [ecx + 0x20], 0xffffffff
jne 0x514eb1
mov edi, dword [ecx + 0x64]
mov eax, dword [edi + 0x3c]
and eax, 0xfff00000
cmp eax, 0x20400000
jne 0x514eb1
mov esi, dword [edi + 8]
xor eax, eax
test esi, esi
jbe 0x514e1c
mov edx, dword [edi + 0xc]
cmp dword [edx], ecx
je 0x514e89
inc eax
add edx, 4
cmp eax, esi
jb 0x514e10
or ebx, 0xffffffff
xor esi, esi
mov ecx, dword [edi + 8]
mov edx, dword [edi + 4]
imul ecx, esi
add ecx, ebx
mov ecx, dword [edx + ecx*4]
cmp ecx, 0xffffffff
je 0x514e81
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x514e81
mov eax, dword [ecx + 0xc]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x58], eax
mov eax, edx
and eax, 0x800
xor ecx, ecx
or eax, ecx
je 0x514e81
and edx, 2
xor eax, eax
or edx, eax
je 0x514e81
mov eax, dword [ebp + 8]
mov ecx, 1
add dword [eax + 0x9bc], ecx
add dword [eax + 0x9c0], ecx
cmp byte [eax + 0x9b8], 0
jne 0x514e8d
inc esi
cmp esi, 2
jb 0x514e21
jmp 0x514eab
mov ebx, eax
jmp 0x514e1f
mov edx, dword [edi + 4]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 4]
sub ecx, esi
imul ecx, dword [edi + 8]
add ecx, ebx
mov ecx, dword [edx + ecx*4]
mov edx, dword [ebp - 0x1c]
mov dword [eax + edx*4], ecx
mov byte [ebp - 5], 1
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, dword [esi]
jb 0x514dbe
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x10]
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, eax
jb 0x514ed7
mov ecx, eax
xor esi, esi
mov dword [ebp - 0xc], ecx
jmp 0x514edd
mov eax, dword [ebx + 0x14]
mov esi, dword [eax + ecx*4]
mov dword [ebp - 0x10], esi
cmp ecx, dword [ebx + 0x10]
jb 0x514d6a
cmp byte [ebp - 5], 0
jne 0x515da8
cmp byte [ebp - 6], 0
jne 0x515da8
mov ecx, dword [ebx + 0x10]
xor edx, edx
lea eax, [ecx - 1]
mov dword [ebp - 0x40], edx
cmp ecx, eax
jbe 0x514f12
mov edx, dword [ebx + 0x14]
mov edx, dword [edx + eax*4]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], eax
cmp eax, ecx
jae 0x515d72
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x10]
mov ebx, dword [esi + 8]
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x14], ebx
test ebx, ebx
je 0x514f56
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
mov eax, dword [eax + 8]
and eax, 0x180
xor edx, edx
or eax, edx
je 0x514f56
test dword [edi + 0x372c], 0x2000
jne 0x515d21
mov eax, dword [esi + 0x3c]
and eax, 0xfff00000
cmp eax, 0x20400000
je 0x514f70
cmp eax, 0x20500000
jne 0x515737
cmp ebx, dword [ebp - 0x40]
jbe 0x5150f4
cmp ebx, 0x10
jbe 0x514f83
mov dword [ebp - 0x40], ebx
jmp 0x514f8d
mov dword [ebp - 0x40], 0x10
mov ebx, dword [ebp - 0x40]
add edi, 0x375c
cmp dword [ebp - 0x78], 0
je 0x514fdf
test ecx, ecx
ja 0x514fa2
mov ecx, 1
mov eax, dword [edi]
cmp ecx, dword [eax + 8]
jae 0x514fae
sub dword [eax + 8], ecx
jmp 0x514fdf
mov ecx, dword [edi + 4]
fstp st(0)
test ecx, ecx
je 0x514fcb
mov edx, dword [ecx + 0xc]
cmp edx, dword [eax + 0xc]
jb 0x514fcb
mov esi, dword [eax]
push eax
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov dword [edi], esi
jmp 0x514fda
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov eax, dword [edi]
mov dword [edi + 4], eax
mov eax, dword [eax]
mov dword [edi], eax
fldz
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x6c], ecx
cmp ebx, 0x3ffffffd
jbe 0x514ff6
mov eax, 0x80070216
jmp 0x51505c
lea eax, [ebx*4]
cmp eax, ecx
jne 0x515006
mov eax, 4
mov dword [ebp - 0x6c], eax
mov esi, eax
test eax, eax
ja 0x515014
mov esi, 1
mov eax, dword [edi]
test eax, eax
je 0x515024
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp esi, ecx
jbe 0x515037
mov ecx, esi
fstp st(0)
call fcn.0047fc20
fldz
test eax, eax
je 0x515037
xor eax, eax
jmp 0x51504b
mov edi, dword [edi]
test edi, edi
je 0x515046
mov edx, dword [edi + 8]
lea eax, [edx + edi + 0x10]
jmp 0x515048
xor eax, eax
add dword [edi + 8], esi
mov dword [ebp - 0x78], eax
neg eax
sbb eax, eax
and eax, 0x7ff8fff2
add eax, 0x8007000e
mov esi, eax
test eax, eax
jl 0x515dd3
cmp ebx, 0x1ffffffe
jbe 0x515075
mov eax, 0x80070216
jmp 0x5150ea
lea eax, [ebx*8]
test eax, eax
jne 0x515085
mov eax, 8
mov edi, dword [ebp + 8]
add edi, 0x37a4
mov dword [ebp - 0x98], eax
mov esi, eax
test eax, eax
ja 0x51509f
mov esi, 1
mov eax, dword [edi]
test eax, eax
je 0x5150af
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 8]
cmp esi, ecx
jbe 0x5150c2
mov ecx, esi
fstp st(0)
call fcn.0047fc20
fldz
test eax, eax
je 0x5150c2
xor eax, eax
jmp 0x5150d6
mov ecx, dword [edi]
test ecx, ecx
je 0x5150d1
mov edx, dword [ecx + 8]
lea eax, [edx + ecx + 0x10]
jmp 0x5150d3
xor eax, eax
add dword [ecx + 8], esi
mov dword [ebp - 0xa4], eax
neg eax
sbb eax, eax
and eax, 0x7ff8fff2
add eax, 0x8007000e
mov esi, eax
test eax, eax
jl 0x515dd3
xor edi, edi
cmp dword [ebp - 0x14], edi
jbe 0x515150
mov esi, dword [ebp - 0x78]
fstp st(0)
mov ebx, dword [ebp - 0xa4]
fld1
mov eax, dword [ebp - 0x10]
mov dword [esi], 0xffffffff
fstp qword [ebx]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + edi*4]
mov ecx, dword [ebp + 8]
push 0
push ebx
push esi
push edx
call fcn.00512bf0
test eax, eax
jl 0x515149
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0xc]
mov edx, dword [esi]
cmp edx, dword [ecx + edi*4]
je 0x515149
mov edx, dword [ebp - 0x14]
inc edi
add ebx, 8
add esi, 4
cmp edi, edx
jb 0x515106
fldz
jmp 0x515153
mov edx, dword [ebp - 0x14]
fldz
jmp 0x515153
mov edx, dword [ebp - 0x14]
cmp edi, edx
jne 0x515737
fld1
mov ebx, dword [ebp - 0xa4]
fld qword [0x44f558]
xor ecx, ecx
cmp edx, 4
mov byte [ebp - 6], 1
mov byte [ebp - 0x15], 1
jl 0x515270
lea edi, [ecx + 2]
lea esi, [ebx + 8]
jmp 0x515186
fxch st(1)
test ecx, ecx
jbe 0x51519b
fld qword [esi - 0x10]
fcomp qword [esi - 8]
fnstsw ax
test ah, 0x44
jnp 0x51519b
mov byte [ebp - 0x15], 0
fcom qword [esi - 8]
fnstsw ax
test ah, 0x41
je 0x5151b3
fxch st(1)
fcom qword [esi - 8]
fnstsw ax
test ah, 5
jp 0x5151b9
fxch st(1)
mov byte [ebp - 6], 0
fxch st(1)
lea eax, [edi - 1]
test eax, eax
jbe 0x5151d0
fld qword [esi - 8]
fcomp qword [esi]
fnstsw ax
test ah, 0x44
jnp 0x5151d0
mov byte [ebp - 0x15], 0
fxch st(1)
fcom qword [esi]
fnstsw ax
test ah, 0x41
je 0x5151e8
fxch st(1)
fcom qword [esi]
fnstsw ax
test ah, 5
jp 0x5151ee
fxch st(1)
mov byte [ebp - 6], 0
fxch st(1)
test edi, edi
jbe 0x515202
fld qword [esi]
fcomp qword [esi + 8]
fnstsw ax
test ah, 0x44
jnp 0x515202
mov byte [ebp - 0x15], 0
fxch st(1)
fcom qword [esi + 8]
fnstsw ax
test ah, 0x41
je 0x51521c
fxch st(1)
fcom qword [esi + 8]
fnstsw ax
test ah, 5
jp 0x515222
fxch st(1)
mov byte [ebp - 6], 0
fxch st(1)
lea eax, [edi + 1]
test eax, eax
jbe 0x51523a
fld qword [esi + 8]
fcomp qword [esi + 0x10]
fnstsw ax
test ah, 0x44
jnp 0x51523a
mov byte [ebp - 0x15], 0
fxch st(1)
fcom qword [esi + 0x10]
fnstsw ax
test ah, 0x41
je 0x515254
fxch st(1)
fcom qword [esi + 0x10]
fnstsw ax
test ah, 5
jp 0x51525a
fxch st(1)
mov byte [ebp - 6], 0
fxch st(1)
add ecx, 4
lea eax, [edx - 3]
add esi, 0x20
add edi, 4
cmp ecx, eax
jb 0x515184
jmp 0x515272
fxch st(1)
mov esi, 1
cmp ecx, edx
jae 0x5152b7
test ecx, ecx
jbe 0x515291
fld qword [ebx + ecx*8 - 8]
fcomp qword [ebx + ecx*8]
fnstsw ax
test ah, 0x44
jnp 0x515291
mov byte [ebp - 0x15], 0
fxch st(1)
fcom qword [ebx + ecx*8]
fnstsw ax
test ah, 0x41
je 0x5152ab
fxch st(1)
fcom qword [ebx + ecx*8]
fnstsw ax
test ah, 5
jp 0x5152b1
fxch st(1)
mov byte [ebp - 6], 0
fxch st(1)
add ecx, esi
cmp ecx, edx
jb 0x51527b
cmp byte [ebp - 0x15], 0
je 0x51557e
fld qword [ebx]
fcomp qword [0x44f530]
fnstsw ax
test ah, 0x44
jp 0x5153f6
mov eax, dword [ebp + 8]
fstp st(0)
add dword [eax + 0x90c], esi
fstp st(0)
cmp byte [eax + 0x904], 0
je 0x515d21
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 0x3c]
mov eax, edx
and eax, 0xfffff
or eax, 0x20400000
mov byte [ebp - 6], 0
cmp ecx, eax
je 0x515397
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
movzx edx, word [ecx + 0x40]
lea edi, [ecx + 0x40]
add esi, esi
mov dword [ecx + 0x3c], eax
mov byte [ebp - 6], 1
cmp esi, edx
jbe 0x515384
mov ebx, ecx
fstp st(0)
add ebx, 4
cmp word [edi], 0
je 0x515374
mov eax, dword [0x551d48]
test eax, eax
jge 0x515340
xor eax, eax
jmp 0x515347
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
movzx ecx, word [edi]
cmp ecx, dword [eax + 0x124]
ja 0x51536d
mov edx, dword [ebx]
mov eax, dword [eax + 0x120]
shl ecx, 4
lea eax, [ecx + eax - 0x10]
test edx, edx
je 0x51536d
mov ecx, dword [eax + 4]
mov dword [edx], ecx
mov dword [eax + 4], edx
xor edx, edx
mov word [edi], dx
mov dword [ebx], edx
push edi
call fcn.0050a790
test eax, eax
jl 0x515d61
fldz
mov eax, dword [ebp - 0x10]
mov edi, dword [eax + 4]
mov dword [eax], esi
test esi, esi
jbe 0x515397
mov ecx, esi
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x14]
xor eax, eax
test ecx, ecx
jbe 0x5153dd
mov ebx, dword [ebp - 0x78]
mov esi, dword [ebp - 0x10]
lea edi, [ecx*4]
mov ecx, dword [esi + 4]
mov edx, dword [ebx + eax*4]
cmp dword [ecx + eax*4], edx
lea ecx, [ecx + eax*4]
je 0x5153c1
mov dword [ecx], edx
mov byte [ebp - 6], 1
mov edx, dword [esi + 4]
lea ecx, [edi + edx]
mov edx, dword [ebx + eax*4]
cmp dword [ecx], edx
je 0x5153d4
mov dword [ecx], edx
mov byte [ebp - 6], 1
inc eax
add edi, 4
cmp eax, dword [ebp - 0x14]
jb 0x5153ad
mov cl, byte [ebp - 6]
test cl, cl
je 0x515725
mov eax, dword [ebp + 8]
inc dword [eax + 0x908]
jmp 0x515725
fld qword [ebx]
fucompp
fnstsw ax
test ah, 0x44
jp 0x515461
mov eax, dword [ebp + 8]
fstp st(0)
add dword [eax + 0x9e4], esi
add dword [eax + 0x9e8], esi
cmp byte [eax + 0x9e0], 0
je 0x515d21
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 0xfffff
or ecx, 0x10000000
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebp - 0x78]
mov dword [eax], edx
mov dword [eax + 8], edx
test ecx, ecx
je 0x515733
mov edx, dword [ebp - 0x14]
fstp st(0)
mov eax, dword [eax + 4]
add edx, edx
add edx, edx
push edx
push ecx
push eax
call sub.msvcrt.dll_memcpy
fldz
add esp, 0xc
jmp 0x515733
fld qword [ebx]
fucomp st(2)
fnstsw ax
test ah, 0x44
jp 0x5154fd
mov eax, dword [ebp + 8]
fstp st(0)
add dword [eax + 0x9d0], esi
add dword [eax + 0x9d4], esi
cmp byte [eax + 0x9cc], 0
je 0x515d21
mov edi, dword [ebp - 0x10]
mov ecx, edx
and ecx, 0xfffff
or ecx, 0x10000000
mov dword [edi + 0x3c], ecx
mov ecx, dword [ebp - 0x50]
mov dword [edi], edx
mov dword [edi + 8], edx
cmp ecx, 0xffffffff
jne 0x5154e3
mov edx, dword [eax + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x7800
push 0
push 0
push edx
lea ecx, [ebp - 0x50]
push ecx
push eax
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
fldz
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x14]
xor eax, eax
test edx, edx
jbe 0x515733
mov esi, dword [edi + 4]
mov dword [esi + eax*4], ecx
inc eax
cmp eax, edx
jb 0x5154ed
jmp 0x515733
fld qword [ebx]
fucompp
fnstsw ax
test ah, 0x44
jp 0x515582
mov eax, dword [ebp + 8]
add dword [eax + 0x9fc], esi
cmp byte [eax + 0x9f4], 0
je 0x515d21
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x3c]
mov eax, edx
and eax, 0xfffff
or eax, 0x10100000
xor bl, bl
cmp ecx, eax
je 0x515540
mov dword [edi + 0x3c], eax
mov dword [edi], edx
mov dword [edi + 8], edx
mov bl, 1
xor eax, eax
test edx, edx
jbe 0x515560
mov ecx, dword [edi + 4]
mov esi, dword [ebp - 0x78]
mov esi, dword [esi + eax*4]
cmp dword [ecx + eax*4], esi
lea ecx, [ecx + eax*4]
je 0x51555b
mov dword [ecx], esi
mov bl, 1
inc eax
cmp eax, edx
jb 0x515546
test bl, bl
je 0x51556d
mov eax, dword [ebp + 8]
inc dword [eax + 0x9f8]
cmp byte [ebp - 5], 0
jne 0x515733
test bl, bl
jmp 0x51572d
fstp st(0)
fstp st(0)
mov eax, dword [ebp + 8]
test byte [eax + 0xae], 0x80
je 0x515598
cmp byte [ebp - 6], 0
je 0x515737
add dword [eax + 0x934], esi
cmp byte [eax + 0x92c], 0
je 0x515d21
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x3c]
mov eax, edx
and eax, 0xfffff
or eax, 0x20500000
mov byte [ebp - 6], 0
cmp ecx, eax
je 0x515654
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
lea edi, [ecx + 0x40]
mov dword [ecx + 0x3c], eax
movzx ecx, word [edi]
add esi, esi
mov byte [ebp - 6], 1
cmp esi, ecx
jbe 0x515641
mov ebx, dword [ebp - 0x10]
fstp st(0)
add ebx, 4
cmp word [edi], 0
je 0x515631
mov eax, dword [0x551d48]
test eax, eax
jge 0x5155fd
xor eax, eax
jmp 0x515604
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
movzx ecx, word [edi]
cmp ecx, dword [eax + 0x124]
ja 0x51562a
mov edx, dword [ebx]
mov eax, dword [eax + 0x120]
shl ecx, 4
lea eax, [ecx + eax - 0x10]
test edx, edx
je 0x51562a
mov ecx, dword [eax + 4]
mov dword [edx], ecx
mov dword [eax + 4], edx
xor edx, edx
mov word [edi], dx
mov dword [ebx], edx
push edi
call fcn.0050a790
test eax, eax
jl 0x515d61
fldz
mov eax, dword [ebp - 0x10]
mov edi, dword [eax + 4]
mov dword [eax], esi
test esi, esi
jbe 0x515654
mov ecx, esi
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x14]
xor edi, edi
test eax, eax
jbe 0x515715
lea ebx, [eax*4]
mov edx, dword [ebp - 0x10]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x78]
mov ecx, dword [ecx + edi*4]
cmp dword [eax + edi*4], ecx
lea eax, [eax + edi*4]
je 0x515682
mov dword [eax], ecx
mov byte [ebp - 6], 1
mov edx, dword [edx + 4]
mov ecx, dword [ebx + edx]
lea esi, [ebx + edx]
cmp ecx, 0xffffffff
je 0x5156cb
mov eax, dword [ecx + 0x10]
fld qword [ecx + 0xa8]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x5156c9
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
je 0x5156c9
mov eax, dword [ebp - 0xa4]
fld qword [eax + edi*8]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x515708
jmp 0x5156cb
fstp st(1)
mov ecx, dword [ebp - 0xa4]
fstp st(0)
fld qword [ecx + edi*8]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x7800
push 0
push 0
push edx
push esi
push eax
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
fldz
mov byte [ebp - 6], 1
inc edi
add ebx, 4
cmp edi, dword [ebp - 0x14]
jb 0x515668
mov cl, byte [ebp - 6]
test cl, cl
je 0x515725
mov eax, dword [ebp + 8]
inc dword [eax + 0x930]
cmp byte [ebp - 5], 0
jne 0x515733
test cl, cl
mov byte [ebp - 5], 0
je 0x515737
mov byte [ebp - 5], 1
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x3c]
and ecx, 0xfff00000
cmp ecx, 0x20500000
jne 0x515d21
mov ebx, dword [eax + 8]
xor esi, esi
xor cl, cl
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x28], esi
mov byte [ebp - 6], cl
cmp ebx, esi
jbe 0x5158b6
fstp st(0)
mov edx, dword [ebp - 0x78]
lea eax, [edx + esi*4]
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x48]
push edx
lea ecx, [ebp - 0x38]
push ecx
or edi, 0xffffffff
lea edx, [ebp - 0x14]
push edx
mov dword [eax], edi
push eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x20], edi
mov edx, dword [ecx + esi*4]
mov ecx, dword [ebp + 8]
push edx
call fcn.00513350
test eax, eax
jl 0x5158b1
cmp dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x38]
je 0x5157dd
cmp edi, 0xffffffff
je 0x5157dd
mov eax, dword [ebp - 0x14]
fld qword [eax + 0xa8]
fcomp qword [edi + 0xa8]
fnstsw ax
test ah, 1
jne 0x5157d6
or edi, 0xffffffff
mov dword [ebp - 0x38], edi
jmp 0x5157dd
mov dword [ebp - 0x14], 0xffffffff
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x48]
cmp edx, 0xffffffff
je 0x51583b
cmp ecx, 0xffffffff
je 0x515806
fld qword [edx + 0xa8]
fcomp qword [ecx + 0xa8]
fnstsw ax
test ah, 0x41
jp 0x515835
or ecx, 0xffffffff
mov dword [ebp - 0x48], ecx
cmp dword [ebp - 0x14], 0xffffffff
jne 0x5158b1
cmp edi, 0xffffffff
jne 0x5158b1
cmp ecx, edi
je 0x515877
fld qword [ecx + 0xa8]
mov ecx, dword [ebp - 0xa4]
fstp qword [ecx + esi*8]
mov eax, 0x20300000
mov cl, 1
jmp 0x515892
or edx, 0xffffffff
mov dword [ebp - 0x20], edx
cmp ecx, 0xffffffff
jne 0x515852
cmp dword [ebp - 0x14], ecx
je 0x515852
mov ecx, dword [ebp - 0x14]
fld qword [ecx + 0xa8]
mov cl, 1
jmp 0x515884
cmp edx, 0xffffffff
jne 0x515806
cmp ecx, edx
jne 0x515806
cmp edi, edx
je 0x515806
mov eax, dword [ebp - 0xa4]
fld qword [edi + 0xa8]
fstp qword [eax + esi*8]
mov eax, 0x20300000
xor cl, cl
jmp 0x515892
cmp edx, 0xffffffff
je 0x5158b1
fld qword [edx + 0xa8]
xor cl, cl
mov edx, dword [ebp - 0xa4]
fstp qword [edx + esi*8]
mov eax, 0x20200000
test esi, esi
jne 0x51589e
mov dword [ebp - 0x28], eax
mov byte [ebp - 6], cl
jmp 0x5158a8
cmp eax, dword [ebp - 0x28]
jne 0x5158b1
cmp cl, byte [ebp - 6]
jne 0x5158b1
inc esi
cmp esi, ebx
jb 0x515769
fldz
mov cl, byte [ebp - 6]
mov eax, dword [ebp + 8]
cmp esi, ebx
jne 0x515d21
mov edx, 1
add dword [eax + 0x91c], edx
add dword [eax + 0x920], edx
cmp byte [eax + 0x918], 0
je 0x515d21
test byte [eax + 0xad], 2
jne 0x51598c
mov eax, dword [ebp - 0x28]
mov edx, eax
xor edx, ebx
and edx, 0xfffff
xor edx, eax
mov eax, dword [ebp - 0x10]
mov dword [eax + 0x3c], edx
movzx eax, cl
neg eax
sbb eax, eax
xor edx, edx
and eax, ebx
test cl, cl
setne dl
xor edi, edi
dec edx
and edx, ebx
mov ecx, edx
test ebx, ebx
jbe 0x515d1d
add ecx, ecx
fstp st(0)
add ecx, ecx
mov dword [ebp - 0x20], ecx
lea ebx, [eax*4]
mov eax, dword [ebp - 0x10]
mov edx, dword [eax + 4]
mov ecx, dword [ebp - 0x78]
mov ecx, dword [ecx + edi*4]
sub esp, 8
mov dword [ebx + edx], ecx
mov edx, dword [ebp - 0xa4]
fld qword [edx + edi*8]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 4]
fstp qword [esp]
mov edx, dword [ecx + 0x366c]
add eax, dword [ebp - 0x20]
push 0x20
push 0x7800
push 0
push 0
push edx
push eax
push ecx
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
add dword [ebp - 0x20], 4
inc edi
add ebx, 4
cmp edi, dword [ebp - 0x24]
jb 0x515930
jmp 0x515d1b
mov eax, dword [ebp + 8]
fstp st(0)
mov edi, ebx
push ebx
and edi, 0xfffff
push ebx
mov ecx, edi
or ecx, 0x10100000
push ecx
lea edx, [ebp - 0x30]
push edx
push eax
call fcn.00508af0
mov esi, eax
test esi, esi
jl 0x515dd5
push ebx
lea ecx, [ebx + ebx]
push ecx
mov ecx, dword [ebp + 8]
mov edx, edi
or edx, 0x20400000
push edx
lea eax, [ebp - 0x1c]
push eax
push ecx
call fcn.00508af0
mov esi, eax
test esi, esi
jl 0x515dd5
mov ecx, dword [ebp + 8]
push ebx
lea edx, [ebx + ebx*2]
push edx
or edi, 0x30000000
push edi
lea eax, [ebp - 0x80]
push eax
push ecx
call fcn.00508af0
mov esi, eax
test esi, esi
jl 0x515dd5
cmp byte [ebp - 6], 0
mov eax, dword [ebp - 0x10]
mov edx, dword [eax + 0x34]
mov ecx, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x80]
mov dword [ecx + 0x34], edx
mov edx, dword [eax + 0x38]
mov dword [ecx + 0x38], edx
mov edx, dword [eax + 0x34]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 0x34], edx
mov edx, dword [eax + 0x38]
mov dword [ecx + 0x38], edx
mov ecx, dword [eax + 0x34]
mov dword [ebx + 0x34], ecx
mov edx, dword [eax + 0x38]
mov dword [ebx + 0x38], edx
mov dword [ebp - 0x14], 0
jne 0x515ab1
cmp dword [ebp - 0x24], 0
jbe 0x515b21
mov edi, dword [ebp + 8]
lea ebx, [ebx]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0xa4]
fld qword [edx + eax*8]
mov edx, dword [ebp - 0x30]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x7800
push 0
lea ecx, [eax*4]
mov eax, dword [edi + 0x366c]
push 0
push eax
mov eax, dword [edx + 4]
add eax, ecx
push eax
push edi
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x78]
mov ecx, dword [ecx + eax*4]
mov dword [edx + eax*4], ecx
inc eax
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x24]
jb 0x515a50
jmp 0x515b24
cmp dword [ebp - 0x24], 0
jbe 0x515b21
mov edi, dword [ebp + 8]
lea ebx, [ebx]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 4]
mov esi, dword [ebp - 0x78]
lea eax, [ecx*4]
mov esi, dword [eax + esi]
sub esp, 8
mov dword [eax + edx], esi
mov edx, dword [ebp - 0xa4]
fld qword [edx + ecx*8]
mov ecx, dword [edi + 0x366c]
mov edx, dword [ebp - 0x1c]
fstp qword [esp]
push 0x20
push 0x7800
push 0
push 0
push ecx
mov ecx, dword [edx + 4]
add ecx, eax
push ecx
push edi
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, dword [ebp - 0x24]
jb 0x515ac0
jmp 0x515b24
mov edi, dword [ebp + 8]
cmp dword [ebp - 0x68], 0xffffffff
jne 0x515b58
fld1
mov edx, dword [edi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x7800
push 0
push 0
push edx
lea eax, [ebp - 0x68]
push eax
push edi
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov edx, dword [ebp - 0x50]
cmp edx, 0xffffffff
jne 0x515b91
fldz
mov ecx, dword [edi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x7800
push 0
push 0
push ecx
lea edx, [ebp - 0x50]
push edx
push edi
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov edx, dword [ebp - 0x50]
cmp dword [ebp - 0x28], 0x20300000
mov esi, dword [ebp - 0x24]
jne 0x515bcf
test esi, esi
jbe 0x515c02
lea ecx, [esi*8]
lea eax, [esi*4]
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x68]
mov edi, dword [ebx + 4]
mov dword [eax + edi], esi
mov edi, dword [ebx + 4]
mov dword [ecx + edi], edx
add eax, 4
add ecx, 4
sub dword [ebp - 0x20], 1
jne 0x515bb5
jmp 0x515bff
test esi, esi
jbe 0x515c02
lea ecx, [esi*8]
lea eax, [esi*4]
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x68]
mov edi, dword [ebx + 4]
mov dword [eax + edi], edx
mov edi, dword [ebx + 4]
mov dword [ecx + edi], esi
add eax, 4
add ecx, 4
sub dword [ebp - 0x20], 1
jne 0x515be7
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x14], 0
test esi, esi
jbe 0x515cee
lea eax, [esi*4]
mov dword [ebp - 0x20], eax
jmp 0x515c20
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3688]
mov edi, dword [ebp - 0x14]
mov edx, dword [ebp - 0x30]
sub esp, 8
fstp qword [esp]
push 0
push 0
push 0
push 0
push ecx
mov ecx, dword [edx + 0xc]
add edi, edi
add edi, edi
add ecx, edi
push ecx
push eax
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
fldz
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x3688]
mov ecx, dword [ebp - 0x1c]
sub esp, 8
fstp qword [esp]
push 0
push 0
push 0
push 0
push edx
mov edx, dword [ecx + 0xc]
add edx, edi
push edx
push eax
call fcn.00508980
mov esi, eax
test esi, esi
jl 0x515dd5
mov edx, dword [ebx + 0xc]
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0xc]
mov eax, dword [edi + ecx]
mov ecx, dword [ebp - 0x30]
mov dword [edi + edx], eax
mov edx, dword [ecx + 0xc]
mov eax, dword [edi + edx]
mov dword [eax + 0x64], ecx
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0xc]
mov edx, dword [edi + edx]
mov dword [edx + 0x64], eax
mov edx, dword [ebx + 0xc]
mov edx, dword [edi + edx]
mov dword [edx + 0x64], ebx
mov ecx, dword [ecx + 0xc]
mov edx, dword [eax + 4]
mov esi, dword [edi + ecx]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + edx], esi
mov eax, dword [eax + 0xc]
mov eax, dword [edi + eax]
mov edx, dword [ebx + 4]
mov dword [edi + edx], eax
mov eax, dword [ebp - 0x14]
inc eax
add ecx, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x20], ecx
cmp eax, dword [ebp - 0x24]
jb 0x515c20
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp + 8]
push 1
mov dword [ebp - 0x60], ecx
push eax
lea ecx, [ebp - 0x60]
push ecx
push 3
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x58], ebx
call fcn.00508f00
mov esi, eax
test esi, esi
jl 0x515dd5
fldz
mov byte [ebp - 5], 1
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x515d42
mov edx, dword [ebp + 8]
cmp eax, dword [edx + 0x10]
jae 0x515d42
mov ecx, edx
mov edx, dword [ecx + 0x14]
mov ecx, dword [edx + eax*4 - 4]
dec eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
jmp 0x515d52
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x10]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
cmp eax, dword [ecx + 0x10]
jae 0x515d68
mov edi, ecx
jmp 0x514f23
mov esi, 0x8007000e
jmp 0x515dd5
cmp byte [ebp - 5], 0
fstp st(0)
jne 0x515d9c
jmp 0x515d74
fstp st(0)
mov edi, dword [ebp + 8]
push edi
call fcn.004feb30
mov esi, eax
test esi, esi
jl 0x515dd5
push edi
call fcn.00509310
mov esi, eax
test esi, esi
jl 0x515dd5
mov eax, edi
call fcn.00502460
mov esi, eax
test esi, esi
jl 0x515dd5
xor edx, edx
cmp byte [ebp - 5], dl
sete dl
mov esi, edx
jmp 0x515dd5
push ebx
fstp st(0)
call fcn.004feb30
mov esi, eax
test esi, esi
jl 0x515dd5
push ebx
call fcn.00509310
mov esi, eax
test esi, esi
jl 0x515dd5
mov eax, ebx
call fcn.00502460
mov esi, eax
test esi, esi
jl 0x515dd5
xor esi, esi
jmp 0x515dd5
fstp st(0)
cmp dword [ebp - 0xa4], 0
mov ecx, dword [ebp - 0x98]
je 0x515e44
test ecx, ecx
ja 0x515ded
mov ecx, 1
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x37a4]
cmp ecx, dword [eax + 8]
jae 0x515e00
sub dword [eax + 8], ecx
jmp 0x515e47
mov ecx, dword [edi + 0x37a8]
test ecx, ecx
je 0x515e25
mov edx, dword [ecx + 0xc]
cmp edx, dword [eax + 0xc]
jb 0x515e25
mov ebx, dword [eax]
push eax
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 4
mov dword [edi + 0x37a4], ebx
jmp 0x515e47
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov eax, dword [edi + 0x37a4]
mov dword [edi + 0x37a8], eax
mov eax, dword [eax]
add esp, 4
mov dword [edi + 0x37a4], eax
jmp 0x515e47
mov edi, dword [ebp + 8]
cmp dword [ebp - 0x78], 0
mov ecx, dword [ebp - 0x6c]
je 0x515ebd
test ecx, ecx
ja 0x515e59
mov ecx, 1
mov eax, dword [edi + 0x375c]
cmp ecx, dword [eax + 8]
jae 0x515e72
sub dword [eax + 8], ecx
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [edi + 0x3760]
test ecx, ecx
je 0x515ea0
mov edx, dword [ecx + 0xc]
cmp edx, dword [eax + 0xc]
jb 0x515ea0
mov ebx, dword [eax]
push eax
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov dword [edi + 0x375c], ebx
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov eax, dword [edi + 0x375c]
mov dword [edi + 0x3760], eax
mov eax, dword [eax]
mov dword [edi + 0x375c], eax
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4