Function at 0x10024020
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
mov eax, dword [0x10101040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [0x10103540]
push esi
mov esi, ebx
mov dword [ebp - 0x54], ebx
push edi
mov edi, ecx
mov dword [ebp - 0x44], esi
mov eax, dword [esi + 0x3fe0]
mov dword [edi + 0x84], eax
mov al, byte [edi + 0xa4]
and al, 0xfb
mov dword [edi + 0x7c], 0
cmp dword [edi + 0x18], 0
mov byte [edi + 0xa4], al
mov dword [edi + 0x78], 0
jne 0x1002414e
call fcn.10023d00
xorps xmm0, xmm0
mov dword [ebp - 0x1c], 0
lea edx, [ebp - 0x24]
movq qword [ebp - 0x24], xmm0
mov ecx, edi
call fcn.10023ca0
mov ecx, dword [ebp - 0x1c]
xor eax, eax
mov esi, dword [ebp - 0x20]
cmp ecx, 1
mov edx, dword [ebp - 0x24]
cmove eax, esi
mov dword [edi + 0x78], edx
cmp dword [edi + 0x90], 0
mov dword [edi + 0x7c], eax
mov dword [edi + 0x80], ecx
jne 0x100240c5
test esi, esi
je 0x10024130
mov eax, dword [esi]
mov dword [edi + 0x90], eax
test esi, esi
je 0x10024130
mov eax, dword [esi + 0x2c]
mov ecx, 1
mov eax, dword [eax]
movups xmm0, xmmword [eax + 0x14]
movups xmmword [edi + 0x50], xmm0
movq xmm0, qword [eax + 0x24]
movq qword [edi + 0x60], xmm0
mov eax, dword [eax + 0x2c]
mov dword [edi + 0x68], eax
mov ebx, dword [esi + 0x24]
cmp ebx, ecx
jle 0x10024130
mov eax, dword [esi + 0x2c]
mov dword [ebp - 0x34], eax
lea esi, [eax + 4]
nop dword [eax + eax]
mov eax, dword [esi]
cmp byte [eax + 0x2d], 0
je 0x10024112
inc ecx
add esi, 4
cmp ecx, ebx
jl 0x10024100
jmp 0x10024130
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + ecx*4]
movups xmm0, xmmword [eax + 0x14]
movups xmmword [edi + 0x50], xmm0
movq xmm0, qword [eax + 0x24]
movq qword [edi + 0x60], xmm0
mov eax, dword [eax + 0x2c]
mov dword [edi + 0x68], eax
test edx, edx
je 0x10024142
or byte [edx + 0xa4], 0x20
mov edx, dword [edx + 0x18]
test edx, edx
jne 0x10024134
mov ebx, dword [0x10103540]
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0x54], ebx
cmp dword [edi + 0x30], 0
je 0x1002416e
mov eax, dword [edi + 0x10]
shr eax, 0xc
test al, 1
je 0x1002416e
mov ecx, edi
call fcn.10026430
mov ebx, dword [0x10103540]
mov dword [ebp - 0x54], ebx
mov ecx, dword [edi + 0x18]
xor al, al
mov byte [ebp - 0x2d], al
test ecx, ecx
jne 0x1002438d
test dword [edi + 0x10], 0x400
jne 0x1002438d
mov ecx, dword [edi + 0x24]
lea edx, [edi + 0x24]
cmp ecx, 1
jg 0x100241b7
cmp dword [edi + 0x1c], 0
jne 0x100241b7
cmp byte [esi + 0x46], al
jne 0x100241b7
test ecx, ecx
je 0x100241b0
mov eax, dword [edi + 0x2c]
mov eax, dword [eax]
cmp byte [eax + 0x2c], 0
jne 0x100241b4
mov al, 1
jmp 0x100241b7
mov al, byte [ebp - 0x2d]
cmp dword [edi + 0x80], 0
je 0x100241cc
test al, al
jne 0x100241cc
mov ecx, dword [edi + 0x18]
jmp 0x10024390
cmp ecx, 1
jne 0x100242a7
mov eax, dword [edi + 0x2c]
mov esi, dword [eax]
mov eax, dword [esi + 0x44]
mov ecx, dword [esi + 0x48]
mov dword [edi + 0x34], eax
mov dword [edi + 0x38], ecx
mov eax, dword [esi + 0x54]
mov ecx, dword [esi + 0x58]
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0xa0]
and eax, 0xfffffebf
mov dword [edi + 0x40], ecx
mov ecx, dword [ebp - 0x44]
or eax, 0x80
and eax, 0xffffffd7
or eax, 0x10
and eax, 0xfffffffa
or eax, 2
mov dword [edi + 0xa0], eax
mov eax, dword [edi + 0x70]
test eax, eax
je 0x10024238
cmp dword [ecx + 0x4b34], eax
jne 0x10024238
xor edx, edx
mov ecx, esi
call fcn.10016dd0
mov ebx, dword [0x10103540]
mov ecx, dword [ebp - 0x44]
mov eax, dword [edi + 0x70]
test eax, eax
je 0x1002429b
test dword [ecx + 0x5f3c], 0x100
je 0x1002426b
push dword [esi + 4]
mov eax, dword [eax + 0x30]
push dword [esi + 8]
push dword [eax]
push dword [edi]
push str._viewport__Node__08X_transfer_Viewport__08X___08X_to_Window__s_n
call fcn.1002aa00
mov ebx, dword [0x10103540]
add esp, 0x14
mov eax, dword [edi + 0x70]
mov ecx, dword [eax + 0x30]
mov dword [esi + 0x30], ecx
mov eax, dword [edi + 0x70]
mov eax, dword [eax + 0x34]
mov dword [esi + 0x34], eax
mov eax, dword [edi + 0x70]
cmp byte [eax + 0xde], 0
je 0x1002429b
mov eax, dword [esi + 8]
mov dword [ecx], eax
mov eax, dword [esi + 0x30]
mov dword [eax + 0x48], esi
mov byte [esi + 0xde], 1
mov eax, dword [esi + 0x34]
lea edx, [edi + 0x24]
mov dword [edi + 0x9c], eax
mov eax, dword [edi + 0x70]
test eax, eax
je 0x100242c7
cmp dword [eax + 0x3bc], edi
jne 0x100242c0
mov dword [eax + 0x3bc], 0
mov dword [edi + 0x70], 0
cmp dword [edx], 1
jne 0x100242dd
mov ecx, dword [edi + 0x2c]
mov eax, dword [ecx]
mov dword [edi + 0x74], eax
mov eax, dword [ecx]
and byte [eax + 0x39d], 0xfe
cmp dword [edi + 0x30], 0
je 0x100242f3
mov ecx, edi
call fcn.10026430
mov ebx, dword [0x10103540]
lea edx, [edi + 0x24]
mov al, byte [edi + 0xa4]
mov esi, dword [ebp - 0x44]
and al, 0xbf
and al, 0xe7
mov dword [edi + 0x14], 1
test byte [edi + 0xa5], 1
mov dword [edi + 0x98], 0
mov byte [edi + 0xa4], al
mov eax, dword [esi + 0x3fe0]
mov dword [edi + 0x88], eax
je 0x10024e83
cmp dword [edx], 1
jne 0x10024e83
mov eax, dword [edi + 0x2c]
mov esi, dword [eax]
mov ecx, esi
call fcn.1000d550
movss xmm1, dword [ebx + 0x37dc]
movss xmm0, dword [ebx + 0x37e0]
subss xmm1, dword [edi + 0x34]
subss xmm0, dword [edi + 0x38]
mov dword [ebx + 0x4070], esi
movss dword [ebx + 0x40c4], xmm1
movss dword [ebx + 0x40c8], xmm0
and byte [edi + 0xa5], 0xfe
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1006399c
mov esp, ebp
pop ebp
ret
lea edx, [edi + 0x24]
mov al, byte [edi + 0xa4]
mov esi, edx
mov dword [ebp - 0x50], esi
test al, 1
je 0x10024432
cmp dword [edi + 0x70], 0
mov dword [ebp - 0x50], esi
jne 0x10024432
test ecx, ecx
jne 0x10024425
test dword [edi + 0x10], 0x400
jne 0x10024425
mov dword [ebp - 0x50], esi
cmp dword [edi + 0x1c], ecx
jne 0x10024432
mov edx, dword [edi + 0x94]
lea esi, [edi + 0x24]
mov dword [ebp - 0x50], esi
test edx, edx
je 0x100243f6
mov ecx, dword [esi + 8]
mov eax, dword [esi]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x34], eax
cmp ecx, eax
je 0x100243f3
mov eax, dword [ecx]
cmp dword [eax + 8], edx
je 0x100243fb
add ecx, 4
cmp ecx, dword [ebp - 0x34]
jne 0x100243e4
mov dword [ebp - 0x50], esi
mov eax, dword [edi + 0x2c]
mov eax, dword [eax]
cmp byte [eax + 0xfc], 0
jg 0x1002440d
cmp byte [eax + 0xfd], 0
jle 0x1002442c
mov dword [edi + 0x14], 2
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1006399c
mov esp, ebp
pop ebp
ret
mov esi, edx
mov dword [ebp - 0x50], esi
jmp 0x10024432
mov al, byte [edi + 0xa4]
mov edx, dword [esi]
mov ecx, dword [edi + 0x10]
mov dword [ebp - 0x58], ecx
test edx, edx
jle 0x1002444a
test ecx, 0x4000
jne 0x1002444a
mov cl, 0x10
jmp 0x1002444c
xor cl, cl
and al, 0xef
or al, cl
mov ecx, dword [ebp - 0x58]
and al, 0xf7
mov byte [edi + 0xa4], al
mov esi, dword [edi + 0x2c]
lea eax, [esi + edx*4]
mov dword [ebp - 0x34], eax
cmp esi, eax
je 0x100244b4
mov ebx, dword [ebp - 0x50]
nop dword [eax + eax]
mov edx, dword [esi]
mov al, byte [edi + 0xa4]
mov cl, byte [edx + 0xe9]
shl cl, 3
or cl, al
xor cl, al
and cl, 8
xor cl, al
cmp dword [ebx], 1
mov byte [edi + 0xa4], cl
mov al, byte [edx + 0x39d]
setg cl
and al, 0xfe
add esi, 4
or cl, al
mov byte [edx + 0x39d], cl
cmp esi, dword [ebp - 0x34]
jne 0x10024470
mov ecx, dword [edi + 0x10]
mov ebx, dword [ebp - 0x54]
test dword [ebp - 0x58], 0x8000
je 0x100244c4
and byte [edi + 0xa4], 0xf7
xor esi, esi
shr ecx, 0xa
mov dword [ebp - 0x54], esi
mov byte [ebp - 0x2d], 0
test cl, 1
je 0x100244e0
mov esi, dword [edi + 0x70]
mov dword [ebp - 0x54], esi
jmp 0x100247b1
mov eax, dword [edi + 0x18]
test eax, eax
jne 0x10024744
test byte [edi + 0xa4], 1
je 0x10024757
mov eax, dword [ebp - 0x50]
cmp dword [eax], esi
jle 0x10024506
mov eax, dword [edi + 0x2c]
mov edx, dword [eax]
jmp 0x10024508
xor edx, edx
mov eax, dword [edi + 0xa0]
shl eax, 0x1d
sar eax, 0x1d
cmp eax, 2
jne 0x1002452c
test edx, edx
je 0x10024566
or dword [ebx + 0x49e4], 1
mov eax, dword [edx + 0x44]
mov ecx, dword [edx + 0x48]
jmp 0x1002453d
cmp eax, 1
jne 0x10024566
or dword [ebx + 0x49e4], eax
mov eax, dword [edi + 0x34]
mov ecx, dword [edi + 0x38]
mov byte [ebx + 0x4a20], 1
mov dword [ebx + 0x49e8], 1
mov dword [ebx + 0x4a04], esi
mov dword [ebx + 0x4a00], esi
mov dword [ebx + 0x49fc], ecx
mov dword [ebx + 0x49f8], eax
mov eax, dword [edi + 0xa0]
shl eax, 0x1a
sar eax, 0x1d
cmp eax, 2
jne 0x10024589
test edx, edx
je 0x100245b1
or dword [ebx + 0x49e4], eax
mov eax, dword [edx + 0x54]
mov ecx, dword [edx + 0x58]
jmp 0x1002459b
cmp eax, 1
jne 0x100245b1
or dword [ebx + 0x49e4], 2
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x40]
mov dword [ebx + 0x49ec], 1
mov dword [ebx + 0x4a0c], ecx
mov dword [ebx + 0x4a08], eax
mov eax, dword [edi + 0xa0]
and al, 0x38
cmp al, 0x10
jne 0x100245de
test edx, edx
je 0x100245de
mov al, byte [edx + 0xe2]
or dword [ebx + 0x49e4], 8
mov byte [ebx + 0x4a21], al
mov dword [ebx + 0x49f0], 1
mov eax, dword [edi + 0xa0]
and eax, 0x1c0
cmp eax, 0x80
jne 0x10024613
test edx, edx
je 0x100245f9
mov eax, dword [edx + 0x34]
jmp 0x10024603
mov eax, dword [edi + 0x9c]
test eax, eax
je 0x10024613
or dword [ebx + 0x49e4], 0x100
mov dword [ebx + 0x4a40], eax
or dword [ebx + 0x49e4], 0x400
movups xmm0, xmmword [edi + 0x50]
movups xmmword [ebx + 0x4a48], xmm0
movq xmm0, qword [edi + 0x60]
movq qword [ebx + 0x4a58], xmm0
mov eax, dword [edi + 0x68]
mov dword [ebx + 0x4a60], eax
lea eax, [ebp - 0x18]
push dword [edi]
push str.DockNode__02X
push 0x14
push eax
call fcn.10009420
mov esi, dword [0x10103540]
lea eax, [ebp - 0x64]
add esp, 0x10
mov dword [ebp - 0x64], 2
or dword [esi + 0x49e4], 0x40
lea ecx, [esi + 0x4a7c]
mov dword [esi + 0x4a3c], 0
movss xmm1, dword [esi + 0x395c]
movss xmm0, dword [esi + 0x3960]
push eax
movss dword [ebp - 0x60], xmm1
movss dword [ebp - 0x5c], xmm0
call fcn.1002ba40
push 0x20081139
xor edx, edx
mov dword [esi + 0x395c], 0
lea ecx, [ebp - 0x18]
mov dword [esi + 0x3960], 0
call fcn.100138f0
add esp, 4
call fcn.10009ea0
mov esi, dword [ebp - 0x44]
mov eax, dword [edi + 0x70]
mov byte [ebp - 0x2d], 1
mov esi, dword [esi + 0x4064]
mov dword [ebp - 0x54], esi
test eax, eax
je 0x100246f2
cmp eax, esi
je 0x100246f2
cmp dword [eax + 0x3bc], edi
jne 0x100246f2
mov dword [eax + 0x3bc], 0
mov dword [esi + 0x3bc], edi
mov dword [edi + 0x70], esi
movss xmm0, dword [esi + 0x44]
movss xmm1, dword [esi + 0x48]
movss dword [esi + 0x128], xmm0
movss dword [esi + 0x12c], xmm1
movss dword [edi + 0x34], xmm0
movss dword [edi + 0x38], xmm1
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x4c]
mov dword [edi + 0x40], ecx
mov ecx, dword [edi + 0x70]
mov dword [edi + 0x3c], eax
cmp byte [ecx + 0xe5], 0
je 0x1002473c
call fcn.10016d50
mov ebx, dword [0x10103540]
jmp 0x1002474d
mov esi, dword [eax + 0x70]
mov dword [ebp - 0x54], esi
mov dword [edi + 0x70], esi
and dword [edi + 0xa0], 0xfffffe00
test byte [edi + 0xa5], 1
je 0x100247b1
mov eax, dword [edi + 0x70]
mov dword [ebp - 0x34], eax
test eax, eax
je 0x100247b1
mov ecx, eax
call fcn.1000d550
movss xmm1, dword [ebx + 0x37dc]
movss xmm0, dword [ebx + 0x37e0]
subss xmm1, dword [edi + 0x34]
subss xmm0, dword [edi + 0x38]
mov eax, dword [ebp - 0x34]
mov dword [ebx + 0x4070], eax
movss dword [ebx + 0x40c4], xmm1
movss dword [ebx + 0x40c8], xmm0
and byte [edi + 0xa5], 0xfe
mov ebx, dword [0x10103540]
mov ecx, dword [edi + 0x18]
mov dword [edi + 0x9c], 0
test ecx, ecx
jne 0x1002482c
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 0x4b34]
test eax, eax
je 0x10024811
mov eax, dword [eax + 0x340]
test eax, eax
je 0x1002482c
nop dword [eax]
mov edx, dword [eax + 0x3b8]
test edx, edx
je 0x10024829
mov ecx, edx
mov eax, dword [ecx + 0x18]
test eax, eax
je 0x100247fc
mov ecx, eax
mov eax, dword [ecx + 0x18]
test eax, eax
jne 0x100247f3
cmp ecx, edi
je 0x10024819
mov eax, dword [ecx + 0x70]
test eax, eax
je 0x10024811
mov eax, dword [eax + 0x340]
test eax, eax
jne 0x100247e0
mov eax, dword [edi + 0x78]
mov dword [ebp - 0x40], eax
jmp 0x1002483a
mov eax, dword [edx]
mov dword [edi + 0x90], eax
mov eax, dword [edi + 0x78]
mov dword [ebp - 0x40], eax
jmp 0x1002483a
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x78]
mov dword [ebp - 0x40], eax
test ecx, ecx
jne 0x10024ba0
mov ecx, eax
mov dword [ebp - 0x48], ecx
test esi, esi
je 0x10024ba0
mov edx, dword [ebp - 0x58]
and edx, 8
mov dword [ebp - 0x3c], edx
je 0x10024ba0
test eax, eax
je 0x10024ba0
cmp dword [eax + 0x1c], 0
jne 0x10024ba0
cmp dword [eax + 0x24], 0
jne 0x10024ba0
cmp byte [ebx + 0x4d14], 0
mov byte [ebp - 0x49], 1
je 0x10024926
cmp dword [ebx + 0x4d34], 0xffffffff
je 0x10024926
lea eax, [ebx + 0x4d24]
mov dword [ebp - 0x34], eax
mov eax, ecx
cmp dword [ebp - 0x34], 0
mov dword [ebp - 0x40], eax
je 0x10024933
cmp dword [ebx + 0x4d34], 0xffffffff
je 0x10024926
lea ecx, [ebx + 0x4d38]
mov eax, str._IMWINDOW
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
mov byte [ebp - 0x35], dl
mov edx, dword [ebp - 0x3c]
jne 0x100248f0
cmp byte [ebp - 0x35], 0
je 0x100248ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
mov byte [ebp - 0x35], dl
mov edx, dword [ebp - 0x3c]
jne 0x100248f0
add eax, 2
add ecx, 2
cmp byte [ebp - 0x35], 0
jne 0x100248c0
xor eax, eax
jmp 0x100248f5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x10024923
mov edx, dword [ebx + 0x4d24]
mov ecx, esi
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
mov edx, dword [edx]
call fcn.10026570
test al, al
je 0x1002492d
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x40], eax
jmp 0x10024a75
mov ecx, dword [ebp - 0x48]
mov eax, ecx
mov dword [ebp - 0x40], eax
jmp 0x10024933
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x3c]
mov ecx, dword [eax + 0x18]
mov dword [ebp - 0x34], eax
test ecx, ecx
je 0x1002494f
nop dword [eax]
mov edx, ecx
mov dword [ebp - 0x34], edx
mov ecx, dword [edx + 0x18]
test ecx, ecx
jne 0x10024940
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
movss xmm2, dword [eax + 0x34]
movaps xmm4, xmm2
mov dword [ebp - 0x48], eax
addss xmm4, dword [eax + 0x3c]
movss xmm0, dword [ecx + 0x34]
movss xmm7, dword [ecx + 0x38]
movaps xmm5, xmm0
addss xmm5, dword [ecx + 0x3c]
movaps xmm6, xmm7
addss xmm6, dword [ecx + 0x40]
mov ecx, eax
comiss xmm2, xmm0
movss xmm1, dword [ecx + 0x38]
movss xmm0, dword [0x100f8f80]
movaps xmm3, xmm1
addss xmm3, dword [eax + 0x40]
jbe 0x1002499c
addss xmm2, xmm0
comiss xmm5, xmm4
jbe 0x100249a5
subss xmm4, xmm0
comiss xmm1, xmm7
jbe 0x100249ae
addss xmm1, xmm0
comiss xmm6, xmm3
jbe 0x100249b7
subss xmm3, xmm0
comiss xmm2, xmm4
ja 0x10024b98
comiss xmm1, xmm3
ja 0x10024b98
subss xmm4, xmm2
movaps xmm0, xmm2
subss xmm3, xmm1
cvttss2si eax, xmm4
movzx ecx, ax
mov word [ebp - 0x34], ax
cvttss2si eax, xmm3
mov dword [ebp - 0x5c], ecx
movzx ecx, ax
mov word [ebp - 0x32], ax
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x268], eax
subss xmm0, dword [esi + 0x44]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [esi + 0x338]
cvttss2si eax, xmm0
movaps xmm0, xmm1
mov word [ebp - 0x34], ax
subss xmm0, dword [esi + 0x48]
cvttss2si eax, xmm0
mov word [ebp - 0x32], ax
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x26c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
test ecx, ecx
je 0x10024a72
mov eax, dword [ebp - 0x5c]
mov word [ebp - 0x34], ax
mov eax, dword [ebp - 0x1c]
mov word [ebp - 0x32], ax
mov eax, dword [ebp - 0x34]
mov dword [ecx + 0x268], eax
subss xmm2, dword [ecx + 0x44]
subss xmm1, dword [ecx + 0x48]
mov dword [ebp - 0x3c], edx
cvttss2si eax, xmm2
mov word [ebp - 0x34], ax
cvttss2si eax, xmm1
mov word [ebp - 0x32], ax
mov eax, dword [ebp - 0x34]
mov dword [ecx + 0x26c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x3c]
cmp dword [edi + 0x18], 0
mov dword [ebp - 0x48], ecx
jne 0x10024bb7
test esi, esi
je 0x10024c85
push dword [esi + 0x50]
xor edx, edx
mov ecx, edi
push dword [esi + 0x4c]
push dword [esi + 0x48]
push dword [esi + 0x44]
call fcn.10027fc0
movups xmm0, xmmword [ebx + 0x3bec]
add esp, 0x10
mov dword [ebp - 0x2c], 0x1b
lea eax, [ebp - 0x2c]
lea ecx, [ebx + 0x4a70]
movups xmmword [ebp - 0x28], xmm0
push eax
call fcn.1002bb50
mov eax, dword [ebp - 0x44]
mov esi, dword [0x10103540]
mov dword [ebp - 0x2c], 0x1d
movups xmm0, xmmword [eax + 0x3a8c]
lea eax, [ebp - 0x2c]
push eax
movups xmmword [ebx + 0x3bec], xmm0
lea ecx, [esi + 0x4a70]
movups xmm0, xmmword [esi + 0x3c0c]
movups xmmword [ebp - 0x28], xmm0
call fcn.1002bb50
mov ebx, dword [ebp - 0x44]
lea eax, [ebp - 0x2c]
push eax
mov dword [ebp - 0x2c], 0x1c
movups xmm0, xmmword [ebx + 0x3c3c]
movups xmmword [esi + 0x3c0c], xmm0
mov esi, dword [0x10103540]
movups xmm0, xmmword [esi + 0x3bfc]
lea ecx, [esi + 0x4a70]
movups xmmword [ebp - 0x28], xmm0
call fcn.1002bb50
movups xmm0, xmmword [ebx + 0x3c2c]
mov ecx, edi
movups xmmword [esi + 0x3bfc], xmm0
call fcn.10028380
mov esi, dword [0x10103540]
mov ebx, 3
mov eax, dword [esi + 0x4a70]
cmp eax, ebx
jge 0x10024b66
mov ecx, dword [ebp - 0x3c]
mov ebx, eax
test ebx, ebx
jle 0x10024bb2
mov ecx, dword [esi + 0x4a78]
lea edx, [eax + eax*4]
dec ebx
mov eax, dword [ecx + edx*4 - 0x14]
movups xmm0, xmmword [ecx + edx*4 - 0x10]
add eax, eax
movups xmmword [esi + eax*8 + 0x3a3c], xmm0
dec dword [esi + 0x4a70]
mov eax, dword [esi + 0x4a70]
test ebx, ebx
jg 0x10024b66
mov esi, dword [ebp - 0x54]
jmp 0x10024bc2
mov dword [ebp - 0x3c], edx
jmp 0x10024a72
mov ecx, dword [ebp - 0x58]
and ecx, 8
mov byte [ebp - 0x49], 0
mov dword [ebp - 0x3c], ecx
jmp 0x10024a75
mov esi, dword [ebp - 0x54]
jmp 0x10024bba
mov ecx, dword [ebp - 0x48]
test esi, esi
je 0x10024c85
cmp dword [edi + 0x1c], 0
mov ebx, dword [ebp - 0x40]
mov edx, ebx
mov dword [ebp - 0x1c], edx
jne 0x10024c80
mov eax, dword [ebp - 0x50]
cmp dword [eax], 0
jne 0x10024c80
test byte [edi + 0xa4], 1
mov ecx, dword [ebp - 0x3c]
je 0x10024c88
mov ecx, dword [esi + 0x2a4]
push 0
push ecx
add ecx, 0x78
call fcn.10037950
mov ecx, dword [ebp - 0x58]
and ecx, 8
mov dword [ebp - 0x48], ecx
je 0x10024c1c
or byte [edi + 0xa4], 4
mov dword [edi + 0x6c], 0
jmp 0x10024c88
movss xmm1, dword [0x100f8f34]
mov ecx, 0x27
call fcn.10009cd0
mov dword [edi + 0x6c], eax
test eax, eax
je 0x10024c71
movss xmm0, dword [edi + 0x34]
lea ecx, [edi + 0x34]
addss xmm0, dword [edi + 0x3c]
push 0
push ecx
mov dword [esp], 0
push eax
movss dword [ebp - 0x60], xmm0
lea eax, [ebp - 0x60]
movss xmm0, dword [ecx + 4]
addss xmm0, dword [edi + 0x40]
push eax
push ecx
mov ecx, dword [esi + 0x2a4]
movss dword [ebp - 0x5c], xmm0
call fcn.10036ff0
mov ecx, dword [ebp - 0x48]
or byte [edi + 0xa4], 4
mov ebx, dword [ebp - 0x1c]
jmp 0x10024c88
mov ecx, dword [ebp - 0x3c]
jmp 0x10024c88
mov ebx, dword [ebp - 0x40]
test esi, esi
je 0x10024dc2
cmp dword [edi + 0x18], 0
jne 0x10024d9e
test ecx, ecx
je 0x10024d9e
test byte [edi + 0xa4], 1
je 0x10024d9e
mov ecx, dword [esi + 0x2a4]
push 0
push ecx
add ecx, 0x78
call fcn.10037950
cmp byte [ebp - 0x49], 0
lea edx, [edi + 0x34]
je 0x10024d54
movss xmm0, dword [ebx + 0x38]
sub esp, 8
movss xmm1, dword [ebx + 0x34]
mov ecx, 2
movss xmm2, dword [edx]
movss dword [ebp - 0x24], xmm0
addss xmm0, dword [ebx + 0x40]
movss dword [ebp - 0x28], xmm1
addss xmm1, dword [ebx + 0x3c]
movss dword [ebp - 0x68], xmm2
addss xmm2, dword [edi + 0x3c]
movss dword [ebp - 0x1c], xmm0
movss xmm0, dword [edi + 0x38]
movss dword [ebp - 0x64], xmm0
addss xmm0, dword [edi + 0x40]
movss dword [ebp - 0x20], xmm1
movss xmm1, dword [0x100f8f34]
movss dword [ebp - 0x60], xmm2
mov dword [esp + 4], 0
movss dword [ebp - 0x5c], xmm0
call fcn.10009cd0
mov ecx, dword [esi + 0x2a4]
lea edx, [ebp - 0x68]
add esp, 4
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.1003ba80
add esp, 0xc
jmp 0x10024d9e
movss xmm0, dword [edx]
addss xmm0, dword [edi + 0x3c]
movss xmm1, dword [0x100f8f34]
push 0
push ecx
mov ecx, 2
mov dword [esp], 0
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [edx + 4]
addss xmm0, dword [edi + 0x40]
movss dword [ebp - 0x1c], xmm0
call fcn.10009cd0
mov ecx, dword [esi + 0x2a4]
push eax
lea eax, [ebp - 0x20]
push eax
push edx
call fcn.10036ff0
mov ecx, dword [esi + 0x2a4]
push 1
push ecx
add ecx, 0x78
call fcn.10037950
mov ebx, dword [ebp - 0x50]
cmp dword [ebx], 0
jle 0x10024dc5
mov edx, esi
mov ecx, edi
call fcn.10025010
jmp 0x10024ddf
mov ebx, dword [ebp - 0x50]
mov al, byte [edi + 0xa4]
and al, 0xbf
mov dword [edi + 0x98], 0
and al, 0xfd
mov byte [edi + 0xa4], al
mov eax, dword [edi + 0x30]
test eax, eax
je 0x10024ded
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x10024dfd
cmp dword [ebx], 0
jle 0x10024e03
mov eax, dword [edi + 0x2c]
mov eax, dword [eax]
mov eax, dword [eax + 0xa4]
mov dword [edi + 0x94], eax
test esi, esi
je 0x10024e40
test byte [edi + 0xa4], 1
je 0x10024e40
cmp dword [edi + 0x18], 0
jne 0x10024e40
mov ebx, dword [ebp - 0x44]
mov eax, dword [ebx + 0x4070]
test eax, eax
je 0x10024e2b
cmp dword [eax + 0x348], esi
je 0x10024e40
mov ecx, esi
call fcn.100295c0
mov eax, dword [ebx + 0x3fe0]
mov dword [edi + 0x88], eax
jmp 0x10024e53
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 0x3fe0]
mov dword [edi + 0x88], eax
test esi, esi
je 0x10024e78
mov ecx, dword [edi + 0x1c]
test ecx, ecx
je 0x10024e5f
call fcn.10024020
mov ecx, dword [edi + 0x20]
test ecx, ecx
je 0x10024e6b
call fcn.10024020
cmp dword [edi + 0x18], 0
jne 0x10024e78
mov ecx, esi
call fcn.10012450
cmp byte [ebp - 0x2d], 0
je 0x10024e83
call fcn.10016aa0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1006399c
mov esp, ebp
pop ebp
ret