Function at 0x10257090
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xbdc
mov eax, dword [0x1070dd84]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 0xa74], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0xa0c], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x9d8], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0xa28], eax
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xa24], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0xa04], eax
mov eax, dword [ebp + 0x34]
mov dword [ebp - 0xaa8], eax
mov eax, dword [ebp + 0x38]
mov dword [ebp - 0xab4], eax
mov eax, dword [ebp + 0x40]
mov dword [ebp - 0xab0], eax
mov eax, dword [ebp + 0x44]
mov dword [ebp - 0xab8], eax
mov eax, dword [ebp + 0x48]
mov dword [ebp - 0xa70], eax
mov eax, dword [ebp + 0x50]
mov dword [ebp - 0xa90], eax
lea eax, [edx + 0x3ab40]
mov dword [ebp - 0xa1c], eax
mov eax, dword [eax + 0x3bb8]
xor ebx, ebx
mov dword [ebp - 0x9e8], edx
cmp byte [eax + 0x4d], bl
mov eax, dword [ecx + 0x10b0]
mov esi, dword [ebp + 0x30]
sete bl
cmp dword [edx + 0x64dec], 0
lea edi, [ecx + 0xe0]
mov dword [ebp - 0x9d0], ecx
lea ebx, [ebx*2 + 1]
mov dword [ebp - 0xa08], edi
mov dword [ebp - 0xa48], ebx
mov ebx, dword [eax]
lea eax, [ecx + 0x2c70]
mov dword [ebp - 0xaa0], eax
mov dword [ebp - 0x9dc], ebx
mov al, byte [ebx + 0x15]
mov byte [ebp - 0x9d1], al
mov al, byte [ebx + 5]
mov byte [ebp - 0xa00], al
je 0x102571b6
mov ecx, dword [edx]
movzx eax, byte [edx + 0x75538]
add ecx, 0xca20
push eax
push ecx
call fcn.10278680
add esp, 8
mov dword [ebp - 0xa4c], 1
test eax, eax
jne 0x102571c0
mov dword [ebp - 0xa4c], 0
lea eax, [ebx + 0x14]
xor edx, edx
mov dword [ebp - 0xa78], eax
movsx eax, byte [eax]
mov dword [ebp - 0xa30], eax
mov al, byte [ebx + 0x15]
movsx ecx, al
test al, al
mov eax, dword [edi + 0x1c]
mov dword [ebp - 0x9b0], eax
cmovns edx, ecx
mov eax, dword [edi + 0x554]
mov dword [ebp - 0x9ac], eax
mov eax, dword [edi + 0xa8c]
mov dword [ebp - 0x9a8], eax
lea eax, [edi + 0x2c]
mov dword [ebp - 0xa7c], eax
mov eax, dword [eax]
mov dword [ebp - 0x9a4], eax
mov eax, dword [edi + 0x564]
mov dword [ebp - 0x9a0], eax
mov eax, dword [edi + 0xa9c]
mov dword [ebp - 0x99c], eax
lea eax, [esi + 0x4000]
mov dword [ebp - 0x9c4], eax
lea eax, [esi + 0x8000]
mov dword [ebp - 0x9c0], eax
lea eax, [ebx + 0x14]
push eax
mov dword [ebp - 0xa3c], edx
mov dword [ebp - 0xa2c], 0
mov dword [ebp - 0xa64], 0xffffffff
mov dword [ebp - 0xa60], 0x7fffffff
mov dword [ebp - 0x9c8], esi
mov dword [ebp - 0x9bc], 0x80
mov dword [ebp - 0x9b8], 0x80
mov dword [ebp - 0x9b4], 0x80
call fcn.102541f0
mov byte [ebp - 0xa9c], al
lea edi, [ebp - 0xbdc]
or eax, 0xffffffff
mov dword [ebp - 0xa54], 0xffffffff
mov dword [ebp - 0xa80], eax
add esp, 4
mov eax, 0x7fffffff
mov dword [ebp - 0xa58], 0x7fffffff
mov dword [ebp - 0xa68], eax
mov ecx, 0x29
xor eax, eax
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xa6c], eax
mov dword [ebp - 0xa44], eax
mov dword [ebp - 0xa40], eax
cmp dword [ebp - 0xa4c], eax
je 0x10257524
mov eax, dword [ebp - 0xa1c]
mov ecx, dword [eax + 0x1e8]
mov eax, dword [ebp - 0xa08]
cmp byte [eax + 0xfd4], 0
jne 0x1025731c
mov dword [ebp - 0xa44], 1
jmp 0x10257400
mov ebx, dword [eax + 0xfd0]
mov edx, ebx
mov edi, dword [eax + 4]
mov eax, dword [eax + 8]
add eax, edi
mov dword [ebp - 0xa14], ebx
shl eax, 2
sub edx, eax
mov eax, dword [ebp - 0xa08]
mov dword [ebp - 0x9f4], edx
movzx eax, byte [eax + 0x1154]
add eax, edi
cmp eax, ecx
cmovge eax, ecx
mov dword [ebp - 0xa18], eax
cmp edi, eax
jge 0x102573f0
nop
mov edx, dword [edx + edi*4]
cmp byte [edx + 0x9f], 0
mov eax, dword [edx]
mov al, byte [eax + 0x105fc000]
mov byte [ebp - 0x9c9], al
jl 0x10257380
cmp byte [edx + 0x14], 0
jle 0x102573d9
mov ecx, dword [ebx]
xor esi, esi
mov bl, byte [edx + 0x14]
mov bh, byte [edx + 0x15]
xor edx, edx
mov al, byte [ecx + 0x14]
mov byte [ebp - 0x9e4], al
mov al, byte [ecx + 0x15]
test al, al
mov byte [ebp - 0x9e3], al
setg dl
inc edx
xor eax, eax
nop word [eax + eax]
mov cl, byte [ebp + eax - 0x9e4]
cmp cl, bl
je 0x102573bf
cmp cl, bh
jne 0x102573c4
mov esi, 1
inc eax
cmp eax, edx
jl 0x102573b0
test esi, esi
jne 0x10257424
mov al, byte [ebp - 0x9c9]
mov ebx, dword [ebp - 0xa14]
mov edx, dword [ebp - 0x9f4]
movzx eax, al
add edi, eax
cmp edi, dword [ebp - 0xa18]
jl 0x10257360
mov dword [ebp - 0xa44], 0
mov eax, dword [ebp - 0xa08]
cmp byte [eax + 0xfd5], 0
mov ecx, dword [ebp - 0xa1c]
mov ecx, dword [ecx + 0x1e4]
jne 0x10257430
mov dword [ebp - 0xa40], 1
jmp 0x10257524
mov dword [ebp - 0xa44], 1
jmp 0x102573fa
mov esi, dword [eax + 0xfd0]
mov edx, esi
mov edi, dword [eax]
mov ebx, dword [eax + 8]
mov eax, ebx
imul eax, edi
mov dword [ebp - 0xa18], esi
mov dword [ebp - 0xa14], ebx
shl eax, 2
sub edx, eax
mov eax, dword [ebp - 0xa08]
mov dword [ebp - 0xa38], edx
movzx eax, byte [eax + 0x1155]
add eax, edi
cmp eax, ecx
cmovge eax, ecx
mov dword [ebp - 0x9f4], eax
cmp edi, eax
jge 0x1025751a
nop dword [eax + eax]
mov eax, ebx
imul eax, edi
mov edx, dword [edx + eax*4 - 4]
cmp byte [edx + 0x9f], 0
mov eax, dword [edx]
mov al, byte [eax + 0x105fc018]
mov byte [ebp - 0x9c9], al
jl 0x102574a6
cmp byte [edx + 0x14], 0
jle 0x10257503
mov ecx, dword [esi]
xor esi, esi
mov bl, byte [edx + 0x14]
mov bh, byte [edx + 0x15]
xor edx, edx
mov al, byte [ecx + 0x14]
mov byte [ebp - 0x9e4], al
mov al, byte [ecx + 0x15]
test al, al
mov byte [ebp - 0x9e3], al
setg dl
inc edx
xor eax, eax
nop dword [eax]
mov cl, byte [ebp + eax - 0x9e4]
cmp cl, bl
je 0x102574df
cmp cl, bh
jne 0x102574e4
mov esi, 1
inc eax
cmp eax, edx
jl 0x102574d0
test esi, esi
jne 0x10257415
mov al, byte [ebp - 0x9c9]
mov ebx, dword [ebp - 0xa14]
mov esi, dword [ebp - 0xa18]
mov edx, dword [ebp - 0xa38]
movzx eax, al
add edi, eax
cmp edi, dword [ebp - 0x9f4]
jl 0x10257480
mov dword [ebp - 0xa40], 0
push dword [ebp - 0xa00]
mov esi, dword [ebp - 0xa78]
mov ebx, dword [ebp - 0x9d0]
push esi
push ebx
call fcn.10256f10
mov edi, dword [ebp - 0xa04]
mov edx, dword [ebp - 0x9e8]
push eax
push dword [ebp - 0xa0c]
mov dword [ebp - 0xa14], eax
mov eax, dword [ebp + 0x2c]
push eax
mov dword [ebp - 0x9fc], eax
mov eax, dword [ebp + 0x28]
push eax
push edi
push dword [ebp - 0x9d8]
mov dword [ebp - 0xa18], 0xffffffff
push ebx
push edx
mov dword [ebp - 0x9f8], eax
call fcn.1025d6c0
push esi
mov dword [ebp - 0xa94], eax
call fcn.102541f0
movsx eax, al
add esp, 0x30
cmp byte [esi + 1], 0
movzx eax, word [ebx + eax*2 + 0x3138]
jle 0x102575ca
mov ecx, eax
sar eax, 4
and ecx, 7
and eax, 0xf
mov edx, ecx
cmp ecx, 4
jb 0x102575b9
mov edx, 4
mov ecx, eax
shr ecx, 1
lea eax, [edx + ecx*4]
add eax, ecx
movzx eax, word [eax*2 + 0x1070d3cc]
push eax
push dword [ebp - 0xa00]
lea esi, [ebx + 0x31e8]
push esi
call fcn.102559e0
add eax, dword [edi + 0x44]
add esp, 0xc
add eax, dword [edi + 0x40]
mov dword [ebp - 0xa98], eax
mov eax, dword [ebp - 0x9e8]
cmp byte [eax + 0x3ee08], 1
jne 0x10257622
cmp byte [eax + 0x3ab41], 0
jne 0x10257622
cmp dword [eax + 0x64fac], 0
jne 0x10257616
cmp dword [eax + 0x64f28], 0
je 0x10257622
mov dword [ebp - 0xa38], 1
jmp 0x1025762c
mov dword [ebp - 0xa38], 0
xor edx, edx
mov dword [ebp - 0x814], 0x80008000
mov dword [ebp - 0x810], 0x80008000
mov dword [ebp - 0x80c], 0x80008000
mov dword [ebp - 0x808], 0x80008000
mov dword [edi + 0x1468], 0
mov dword [ebp - 0x9e4], edx
cmp dword [ebp - 0xa14], edx
jle 0x10258957
movq xmm0, qword [ebp - 0x960]
lea ecx, [esi + 0x3d28]
movq qword [ebp - 0xad8], xmm0
movups xmm0, xmmword [ebp - 0x970]
mov edi, dword [ebp - 0x9dc]
mov dword [ebp - 0xa8c], ecx
movups xmmword [ebp - 0xaf8], xmm0
movups xmm0, xmmword [ebp - 0x980]
movups xmmword [ebp - 0xae8], xmm0
movq xmm0, qword [ebp - 0x960]
movq qword [ebp - 0xac8], xmm0
movups xmm0, xmmword [ebp - 0x970]
movups xmmword [ebp - 0xb18], xmm0
movups xmm0, xmmword [ebp - 0x980]
movups xmmword [ebp - 0xb08], xmm0
movq xmm0, qword [ebp - 0x960]
movq qword [ebp - 0xad0], xmm0
movups xmm0, xmmword [ebp - 0x970]
movups xmmword [ebp - 0xb38], xmm0
movups xmm0, xmmword [ebp - 0x980]
movups xmmword [ebp - 0xb28], xmm0
nop dword [eax + eax]
push dword [ebp - 0xa9c]
mov al, dl
lea esi, [edx + edx*4]
shl al, 4
xor al, byte [edi + 0x9f]
push ecx
push dword [ebp - 0xaa0]
and al, 0x30
xor byte [edi + 0x9f], al
push edi
mov dword [ebp + esi*4 - 0x84c], 0x80008000
mov dword [ebp + esi*4 - 0x844], 0x7fffffff
call fcn.10256d80
mov edx, dword [ebp - 0xa94]
mov ebx, eax
mov dword [ebp + esi*4 - 0x850], ebx
add esp, 0x10
mov dword [ebp + esi*4 - 0x840], 0
mov esi, dword [ebp - 0x9e4]
mov ecx, esi
sar edx, cl
mov dword [ebp - 0x9e0], ebx
test dl, 1
je 0x10258946
cmp dword [ebp - 0xa4c], 0
je 0x102578e2
cmp dword [ebp - 0xa44], 0
jne 0x102578e2
cmp dword [ebp - 0xa40], 0
jne 0x102578e2
cmp dword [ebp - 0x9f8], 0xffffffff
jne 0x102577c5
cmp dword [ebp - 0x9fc], 0x7fffffff
je 0x102578e2
mov eax, dword [ebp - 0x9e8]
mov dl, byte [ebp - 0xa00]
mov ecx, dword [eax + 0x64dec]
cmp dl, 0x10
je 0x102577f9
cmp dl, 0x18
je 0x102577f9
cmp dl, 0x13
je 0x102577f9
cmp dl, 0x14
je 0x102577f9
cmp dl, 0x15
je 0x102577f9
cmp dl, 0x16
je 0x102577f9
xor eax, eax
jmp 0x102577fe
mov eax, 1
cmp ecx, 2
jge 0x1025780b
test eax, eax
jne 0x102578e2
mov eax, dword [ebp + 0x4c]
cmp dword [eax], 0xffffffff
mov ebx, dword [eax + 4]
mov dword [ebp - 0x9f4], ebx
jne 0x10257828
cmp ebx, 0x7fffffff
je 0x102578dc
cmp dl, 0xf
je 0x10257836
cmp dl, 0x17
je 0x10257836
xor eax, eax
jmp 0x1025783b
mov eax, 1
test eax, eax
mov ecx, esi
mov eax, 3
cmovne ecx, eax
cmp dword [ebp - 0xa3c], 0
jg 0x10257862
mov eax, dword [ebp + 0x4c]
mov edx, dword [ebp - 0xa30]
mov esi, dword [eax + edx*8]
mov edi, dword [eax + edx*8 + 4]
jmp 0x10257899
mov edx, dword [ebp + 0x4c]
mov eax, dword [ebp - 0xa30]
mov ebx, dword [ebp - 0xa3c]
mov edi, dword [edx + eax*8 + 4]
mov esi, dword [edx + eax*8]
mov eax, dword [ebp - 0xa3c]
mov eax, dword [edx + eax*8]
mov edx, dword [edx + ebx*8 + 4]
mov ebx, dword [ebp - 0x9f4]
cmp edi, edx
jl 0x10257895
jg 0x10257899
cmp esi, eax
ja 0x10257899
mov esi, eax
mov edi, edx
mov edx, dword [ebp - 0x9e8]
push ebx
mov eax, dword [edx + 0x64dec]
lea eax, [ecx + eax*4]
mov ecx, dword [ebp + 0x4c]
mov eax, dword [eax*4 + 0x105fc8f4]
cdq
push dword [ecx]
push edx
push eax
call fcn.10398e00
shrd eax, edx, 2
sar edx, 2
cmp edi, edx
jg 0x102581f9
mov edi, dword [ebp - 0x9dc]
jl 0x102578dc
cmp esi, eax
ja 0x10258946
mov ebx, dword [ebp - 0x9e0]
mov esi, dword [ebp - 0x9d8]
mov dword [esi], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov byte [esi + 0x20], 1
mov dword [esi + 4], 0
mov al, byte [edi + 0xa0]
and al, 0xfe
mov byte [edi + 0x4f], 0
or al, 2
cmp byte [edi + 0x15], 0
mov byte [edi + 0xa0], al
jne 0x10257941
mov byte [edi + 0x15], 0xff
mov eax, dword [ebp - 0xa98]
add eax, ebx
mov word [edi + 0x1c], 0
cmp byte [ebp - 0x9d1], 0
mov dword [esi], eax
mov dword [ebp - 0xaac], 0
mov dword [ebp - 0x9f4], 0
jle 0x10257972
xor eax, eax
jmp 0x1025797e
mov eax, dword [ebp - 0x9e8]
mov eax, dword [eax + 0x64d88]
mov ebx, dword [ebp - 0x9d0]
push eax
push ebx
push dword [ebp - 0xa1c]
lea eax, [ebp - 0xa88]
push dword [ebp - 0xa00]
push eax
call fcn.10254250
add esp, 0x14
test eax, eax
je 0x10257c2a
push dword [ebp - 0xa00]
call fcn.101dd6f0
add esp, 4
test eax, eax
je 0x10257baa
lea eax, [ebp - 0x850]
push eax
push dword [ebp - 0xa04]
lea eax, [ebp - 0xa2c]
push eax
lea eax, [ebp - 0xa88]
push eax
push dword [ebp - 0xa0c]
push ebx
push dword [ebp - 0x9e8]
call fcn.10258970
add esp, 0x1c
or eax, edx
jne 0x10257c2a
mov al, byte [ebp - 0xa00]
sub al, 0xd
cmp al, 3
ja 0x10257ba2
cmp dword [ebp - 0xa88], 0x80008000
je 0x10257ba2
mov eax, dword [ebp - 0xa30]
mov ecx, dword [ebp - 0xa04]
movsx eax, al
mov edx, dword [ebx + eax*4 + 0x24398]
cmp edx, dword [ecx + eax*4 + 0x14f0]
jae 0x10257a3d
mov dword [ecx + eax*4 + 0x14f0], edx
mov eax, dword [ebp - 0x9e8]
mov esi, dword [eax + 0x65020]
test esi, esi
je 0x10257b9c
movaps xmm0, xmmword [str.ffffff]
movups xmmword [ebp - 0x958], xmm0
mov eax, dword [ecx + 0x1510]
movaps xmm0, xmmword [str.ffffff]
movups xmmword [ebp - 0x948], xmm0
movaps xmm0, xmmword [0x105fca10]
movups xmmword [ebp - 0x938], xmm0
movaps xmm0, xmmword [0x105fca20]
movups xmmword [ebp - 0x928], xmm0
movaps xmm0, xmmword [0x105fca30]
movups xmmword [ebp - 0x918], xmm0
movaps xmm0, xmmword [0x105fca00]
movups xmmword [ebp - 0x908], xmm0
movaps xmm0, xmmword [str.ffffff]
movups xmmword [ebp - 0x8f8], xmm0
movaps xmm0, xmmword [0x105fca10]
movups xmmword [ebp - 0x8e8], xmm0
movaps xmm0, xmmword [0x105fca40]
movups xmmword [ebp - 0x8d8], xmm0
movaps xmm0, xmmword [0x105c4760]
movups xmmword [ebp - 0x8c8], xmm0
movaps xmm0, xmmword [0x105c4760]
movups xmmword [ebp - 0x8b8], xmm0
movaps xmm0, xmmword [str.ffffff]
movups xmmword [ebp - 0x8a8], xmm0
movaps xmm0, xmmword [str.ffffff]
movups xmmword [ebp - 0x898], xmm0
movaps xmm0, xmmword [0x105c4760]
movups xmmword [ebp - 0x888], xmm0
movaps xmm0, xmmword [0x105c4760]
movd xmm1, eax
movups xmmword [ebp - 0x878], xmm0
shr eax, 0x1f
movaps xmm0, xmmword [0x105c4760]
cvtdq2pd xmm1, xmm1
movups xmmword [ebp - 0x868], xmm0
movsd xmm0, qword [0x103bfbf0]
addsd xmm1, qword [eax*8 + 0x103c1010]
mov eax, dword [ebp - 0xa0c]
movsd qword [ebp - 0x858], xmm0
movd xmm0, edx
cvtdq2pd xmm0, xmm0
movzx ecx, byte [eax + 0x105fc078]
shr edx, 0x1f
imul eax, esi, 0xb
addsd xmm0, qword [edx*8 + 0x103c1010]
mov esi, dword [ebp - 0x9d8]
add ecx, eax
mulsd xmm0, qword [ebp + ecx*8 - 0x9d0]
comisd xmm0, xmm1
ja 0x10257c2a
jmp 0x10257ba2
mov esi, dword [ebp - 0x9d8]
mov eax, dword [ebp - 0xa2c]
add dword [esi], eax
xor ecx, ecx
lea ebx, [edi + 0xc]
cmp byte [ebp - 0x9d1], cl
lea esi, [ebp - 0xa88]
mov edi, ebx
mov dword [ebp - 0xa10], ebx
setg cl
lea ecx, [ecx*4 + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x9d8]
mov ecx, dword [ebp - 0x9d0]
mov eax, dword [esi]
imul dword [ecx + 0x31cc]
add eax, 0x100
adc edx, 0
shrd eax, edx, 9
sar edx, 9
cmp edx, dword [ebp - 0x9fc]
jl 0x10257d9b
jg 0x10257c0f
cmp eax, dword [ebp - 0x9f8]
jbe 0x10257d9b
mov edi, dword [ebp - 0x9dc]
mov al, byte [edi + 5]
cmp al, 0xd
je 0x10257da1
cmp al, 0x11
je 0x10257da1
mov ebx, ecx
mov edx, dword [ebp - 0x9e4]
mov ecx, dword [ebp - 0xa8c]
inc edx
mov dword [ebp - 0x9e4], edx
cmp edx, dword [ebp - 0xa14]
jl 0x10257710
cmp dword [ebp - 0xa54], 0xffffffff
jne 0x10257c62
cmp dword [ebp - 0xa58], 0x7fffffff
je 0x10258957
movups xmm0, xmmword [ebp - 0xae8]
mov eax, dword [ebp - 0xa28]
mov ecx, 0x29
mov edx, dword [ebp - 0xa90]
movups xmmword [esi], xmm0
movups xmm0, xmmword [ebp - 0xaf8]
movups xmmword [esi + 0x10], xmm0
movq xmm0, qword [ebp - 0xad8]
movq qword [esi + 0x20], xmm0
lea esi, [ebp - 0xbdc]
movups xmm0, xmmword [ebp - 0xb08]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0xb18]
movups xmmword [eax + 0x10], xmm0
movq xmm0, qword [ebp - 0xac8]
movq qword [eax + 0x20], xmm0
mov eax, dword [ebp - 0xa24]
movups xmm0, xmmword [ebp - 0xb28]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0xb38]
movups xmmword [eax + 0x10], xmm0
movq xmm0, qword [ebp - 0xad0]
movq qword [eax + 0x20], xmm0
mov eax, dword [ebp - 0xa80]
mov dword [edx], eax
mov eax, dword [ebp - 0xa68]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0xa6c]
rep movsd dword es:[edi], dword [esi]
mov byte [ebx + 0x23b80], al
movzx eax, byte [ebx + 0x1234]
movzx ecx, byte [ebx + 0x1235]
imul ecx, eax
lea eax, [ebp - 0x804]
push ecx
push eax
lea eax, [ebx + 0x23b81]
push eax
call fcn.10399e60
movzx eax, byte [ebx + 0x1234]
movzx ecx, byte [ebx + 0x1235]
imul ecx, eax
lea eax, [ebp - 0x404]
push ecx
push eax
push dword [ebx + 0x10c8]
call fcn.10399e60
mov ebx, dword [ebp - 0x9d8]
add esp, 0x18
mov ecx, dword [ebp - 0x9d0]
mov eax, dword [ebx]
imul dword [ecx + 0x31cc]
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0xc]
add eax, 0x100
adc edx, 0
shld esi, ecx, 7
shrd eax, edx, 9
shl ecx, 7
sar edx, 9
add eax, ecx
mov dword [ebx + 0x10], eax
adc edx, esi
mov dword [ebx + 0x14], edx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10398bef
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x9dc]
mov eax, dword [ebp - 0x9e8]
mov ecx, dword [eax + 0x64db8]
test ecx, ecx
je 0x10257eda
cmp byte [ebp - 0x9d1], 0
jle 0x10257eda
xor edx, edx
cmp byte [edi + 0x15], dl
setg dl
inc ecx
inc edx
mov eax, edx
mov dword [ebp - 0xa34], edx
shl eax, cl
mov dword [ebp - 0xa5c], eax
mov eax, dword [ebp - 0x9e4]
test eax, eax
je 0x10257ec6
mov ebx, dword [ebp - 0x9e4]
lea eax, [ebp - 0x812]
xor ecx, ecx
mov dword [ebp - 0x9f0], eax
mov dword [ebp - 0x9e0], ecx
nop dword [eax]
nop dword [eax + eax]
cmp dword [eax - 2], 0x80008000
je 0x10257ea2
mov dword [ebp - 0x9ec], 0
add edi, 0xe
mov ebx, eax
mov dword [ebp - 0xa20], edx
movsx ecx, word [edi - 2]
lea ebx, [ebx + 4]
movsx eax, word [ebx - 6]
lea edi, [edi + 4]
sub eax, ecx
movsx ecx, word [edi - 4]
cdq
mov esi, eax
movsx eax, word [ebx - 4]
sub eax, ecx
xor esi, edx
sub esi, edx
cdq
xor eax, edx
sub eax, edx
add eax, dword [ebp - 0x9ec]
add eax, esi
sub dword [ebp - 0xa20], 1
mov dword [ebp - 0x9ec], eax
jne 0x10257e32
cmp dword [ebp - 0xa18], 0xffffffff
mov edi, dword [ebp - 0x9dc]
jne 0x10257e8a
cmp eax, dword [ebp - 0xa5c]
jle 0x10258946
mov ebx, dword [ebp - 0x9e4]
mov edx, dword [ebp - 0xa34]
mov ecx, dword [ebp - 0x9e0]
mov eax, dword [ebp - 0x9f0]
inc ecx
add eax, 8
mov dword [ebp - 0x9e0], ecx
mov dword [ebp - 0x9f0], eax
cmp ecx, ebx
jl 0x10257e10
mov ebx, dword [ebp - 0xa10]
mov eax, dword [ebp - 0x9e4]
cmp eax, 2
jae 0x10257eda
lea edi, [ebp - 0x814]
mov ecx, edx
lea edi, [edi + eax*8]
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x9e8]
mov eax, dword [ecx + 0x64c38]
mov dword [ebp - 0x9f0], eax
test eax, eax
je 0x10258210
cmp byte [ecx + 0x64c30], 3
jne 0x10258210
mov al, byte [ebp - 0xa00]
cmp al, 0xf
je 0x10257f13
cmp al, 0x17
jne 0x10258210
mov edx, dword [ebp - 0x9d0]
xor ebx, ebx
mov eax, dword [ecx]
xor ecx, ecx
mov esi, dword [ebp - 0xa04]
mov dword [ebp - 0xa10], eax
mov eax, dword [edx + 0x10b0]
mov eax, dword [eax]
mov dword [ebp - 0xa20], eax
cmp byte [eax + 0x15], cl
setg bl
inc ebx
mov dword [ebp - 0xa5c], ebx
nop word [eax + eax]
movsx eax, byte [ecx + eax + 0x14]
cmp dword [esi + eax*4 + 0x14f0], 0x7fffffff
je 0x10258069
mov eax, dword [ebp - 0xa20]
inc ecx
cmp ecx, ebx
jl 0x10257f50
mov eax, dword [ebp - 0xa0c]
lea edi, [edx + 0x110]
xor esi, esi
mov dword [ebp - 0xa34], 0
shl eax, 6
mov dword [ebp - 0x9ec], 0
mov dword [ebp - 0x9e0], eax
jmp 0x10257fa6
mov edx, dword [ebp - 0x9d0]
lea ecx, [ebp - 0xaa4]
push ecx
push dword [edx + 0x28]
mov ecx, dword [ebp - 0xa10]
push dword [edx + 0x18]
push dword [edi + 0x10]
mov eax, dword [eax + ecx + 0xc4a8]
push dword [edi]
call eax
mov eax, dword [ebp - 0xa20]
lea edi, [edi + 0x14]
mov ebx, dword [ebp - 0xa04]
add esp, 0x14
mov ecx, dword [ebp - 0xa34]
mov edx, dword [ebp - 0x9ec]
movsx eax, byte [esi + eax + 0x14]
inc esi
add ecx, dword [ebp - 0xaa4]
mov dword [ebp - 0xa34], ecx
add edx, dword [ebx + eax*4 + 0x14f0]
mov eax, dword [ebp - 0x9e0]
mov dword [ebp - 0x9ec], edx
cmp esi, dword [ebp - 0xa5c]
jl 0x10257fa0
cmp dword [ebp - 0x9f0], 1
jle 0x10258025
movsd xmm2, qword [0x103bfbf0]
jmp 0x1025802d
movsd xmm2, qword [0x103bfbf8]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
movd xmm1, ecx
addsd xmm0, qword [edx*8 + 0x103c1010]
cvtdq2pd xmm1, xmm1
shr ecx, 0x1f
mulsd xmm0, xmm2
addsd xmm1, qword [ecx*8 + 0x103c1010]
comisd xmm1, xmm0
ja 0x102581f9
mov edx, dword [ebp - 0x9d0]
mov ecx, dword [ebp - 0x9e8]
cmp byte [ebp - 0x9d1], 0
mov ebx, dword [edx + 0xe0]
mov esi, dword [edx + 0xe4]
mov edi, dword [ebp - 0x9f8]
mov dword [ebp - 0xa50], 0
mov dword [ebp - 0x9f0], ebx
mov dword [ebp - 0x9e0], esi
jle 0x10258101
lea eax, [ebp - 0xa50]
push eax
push dword [ebp - 0xa70]
lea eax, [ebp - 0xa2c]
push dword [ebp - 0x9d8]
push eax
lea eax, [ebp - 0x9c8]
push eax
lea eax, [ebp - 0x9b0]
push eax
push dword [ebp - 0xaa8]
lea eax, [ebp - 0x9f4]
push eax
push dword [ebp - 0xa0c]
lea eax, [ebp - 0xa88]
push eax
push dword [ebp - 0x9fc]
push edi
push dword [ebp - 0xa04]
push edx
push ecx
call fcn.1025c040
add esp, 0x3c
test eax, eax
jne 0x102581f9
cmp dword [ebp - 0xa38], 0
jne 0x102583d7
push dword [ebp - 0x9fc]
lea eax, [ebp - 0xa50]
push edi
mov edi, dword [ebp - 0xa04]
push edi
push eax
lea eax, [ebp - 0xaac]
push eax
lea eax, [ebp - 0xa64]
push eax
lea eax, [ebp - 0x9b0]
push eax
lea eax, [ebp - 0x9c8]
push eax
push dword [ebp - 0xa0c]
push dword [ebp - 0xa74]
push dword [ebp - 0x9e8]
push dword [ebp - 0x9d0]
call fcn.10212850
mov edi, dword [edi + 0x3c]
add esp, 0x30
mov esi, eax
mov ebx, edx
test edi, edi
je 0x102581a1
cmp byte [ebp - 0x9d1], 0
jg 0x102581a1
movzx ecx, byte [ebp - 0xa00]
mov eax, dword [ebp - 0x9e4]
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, dword [ebp - 0xa30]
lea edx, [ecx + eax*8]
mov eax, dword [ebp - 0xa64]
mov ecx, dword [ebp - 0xa60]
mov dword [edi + edx*8], eax
mov dword [edi + edx*8 + 4], ecx
or esi, ebx
je 0x1025821b
movups xmm0, xmmword [ebp - 0x9b0]
mov edx, dword [ebp - 0xa7c]
xor ecx, ecx
movups xmmword [ebp - 0x998], xmm0
movq xmm0, qword [ebp - 0x9a0]
movq qword [ebp - 0x988], xmm0
nop dword [eax + eax]
mov eax, dword [ebp + ecx*4 - 0x998]
lea edx, [edx + 0x538]
mov dword [edx - 0x548], eax
mov eax, dword [ebp + ecx*4 - 0x98c]
inc ecx
mov dword [edx - 0x538], eax
cmp ecx, dword [ebp - 0xa48]
jl 0x102581d0
mov esi, dword [ebp - 0x9d8]
mov edi, dword [ebp - 0x9dc]
mov ebx, dword [ebp - 0x9d0]
jmp 0x10257c2a
mov edx, dword [ebp - 0x9d0]
jmp 0x1025806f
mov eax, dword [ebp - 0x9e8]
mov edi, dword [ebp - 0xa60]
mov esi, dword [ebp - 0xa64]
cmp dword [eax + 0x64df4], 0
je 0x102582c2
cmp dword [ebp - 0x9f8], 0xffffffff
jne 0x1025824f
cmp dword [ebp - 0x9fc], 0x7fffffff
je 0x102582c2
mov ebx, esi
mov edx, edi
shrd ebx, edx, 3
sar edx, 3
mov eax, ebx
mov ecx, edx
shld ecx, eax, 1
add eax, eax
add ebx, eax
adc edx, ecx
cmp edx, dword [ebp - 0x9fc]
jl 0x102582c2
jg 0x1025827a
cmp ebx, dword [ebp - 0x9f8]
jbe 0x102582c2
push dword [ebp - 0xa48]
movups xmm0, xmmword [ebp - 0x9b0]
sub esp, 0x18
mov eax, esp
movups xmmword [eax], xmm0
movq xmm0, qword [ebp - 0x9a0]
movq qword [eax + 0x10], xmm0
mov eax, dword [ebp - 0xa08]
push eax
call fcn.101df060
mov esi, dword [ebp - 0x9d8]
add esp, 0x20
mov edi, dword [ebp - 0x9dc]
mov ebx, dword [ebp - 0x9d0]
jmp 0x10257c2a
mov eax, dword [ebp - 0xa04]
mov ebx, dword [eax + 0x3c]
test ebx, ebx
je 0x102583cb
cmp byte [ebp - 0x9d1], 0
jle 0x102583cb
movzx eax, byte [ebp - 0xa00]
movzx ecx, byte [eax + 0x105fc174]
movzx edx, byte [eax + 0x105fc190]
mov eax, dword [ebp - 0x9e4]
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, dword [ebp - 0xa30]
lea eax, [ecx + eax*8]
mov ecx, dword [ebx + eax*8]
mov eax, dword [ebx + eax*8 + 4]
mov dword [ebp - 0x9ec], eax
mov eax, dword [ebp - 0x9e4]
lea eax, [eax + edx*2]
add eax, edx
mov edx, dword [ebp - 0xa3c]
lea eax, [edx + eax*8]
mov edx, dword [ebx + eax*8]
mov eax, dword [ebx + eax*8 + 4]
mov ebx, dword [ebp - 0x9ec]
cmp ebx, eax
jg 0x10258345
jl 0x10258341
cmp ecx, edx
jae 0x10258345
mov edx, ecx
jmp 0x10258347
mov ebx, eax
shrd esi, edi, 3
sar edi, 3
mov eax, esi
mov ecx, edi
shld ecx, eax, 1
add eax, eax
add esi, eax
adc edi, ecx
shld edi, esi, 1
add esi, esi
cmp edi, ebx
jl 0x102583cb
jg 0x1025836c
cmp esi, edx
jbe 0x102583cb
cmp dword [ebp - 0x9fc], 0x7fffffff
jg 0x102583cb
jl 0x10258383
cmp dword [ebp - 0x9f8], 0xffffffff
jae 0x102583cb
push dword [ebp - 0xa48]
movups xmm0, xmmword [ebp - 0x9b0]
sub esp, 0x18
mov eax, esp
movups xmmword [eax], xmm0
movq xmm0, qword [ebp - 0x9a0]
movq qword [eax + 0x10], xmm0
mov eax, dword [ebp - 0xa08]
push eax
call fcn.101df060
mov esi, dword [ebp - 0x9d8]
add esp, 0x20
mov edi, dword [ebp - 0x9dc]
mov ebx, dword [ebp - 0x9d0]
jmp 0x10257c2a
mov esi, dword [ebp - 0x9e0]
mov ebx, dword [ebp - 0x9f0]
mov ecx, dword [ebp - 0x9d8]
mov eax, dword [ebp - 0x9f4]
add dword [ecx], eax
cmp dword [ebp - 0xa50], 1
mov edi, dword [ecx]
mov dword [ebp - 0x9f4], edi
je 0x10258441
mov edx, dword [ebp - 0xa1c]
xor edi, edi
mov ecx, 2
mov eax, dword [edx + 0x3bb8]
cmp byte [eax + 0x4d], 0
lea eax, [ebp - 0x9b0]
cmovne ecx, edi
push ecx
push edi
push dword [ebp - 0xa0c]
push eax
mov eax, dword [ebp - 0xa08]
push esi
push ebx
push eax
push edx
call fcn.1026b960
mov esi, dword [ebp - 0x9d8]
add esp, 0x20
mov eax, dword [esi]
mov dword [ebp - 0x9f4], eax
jmp 0x10258443
mov esi, ecx
lea eax, [ebp - 0xac0]
mov ebx, dword [ebp - 0x9d0]
push eax
push 0
push dword [ebp - 0xab0]
lea eax, [ebp - 0x9b0]
push dword [ebp + 0x3c]
push dword [ebp - 0xab4]
push eax
lea eax, [ebp - 0xa2c]
push eax
push dword [ebp - 0xa70]
push dword [ebp - 0x9fc]
push dword [ebp - 0x9f8]
push dword [ebp - 0xa04]
push dword [ebp - 0xa24]
push dword [ebp - 0xa28]
push esi
push dword [ebp - 0xa0c]
push ebx
push dword [ebp - 0xa74]
push dword [ebp - 0x9e8]
call fcn.1025a770
add esp, 0x48
cmp eax, 0xffffffff
jne 0x102584c0
cmp edx, 0x7fffffff
je 0x102588e4
mov eax, dword [esi]
imul dword [ebx + 0x31cc]
mov ecx, dword [esi + 0xc]
mov edi, eax
mov ebx, edx
mov eax, dword [esi + 8]
add edi, 0x100
adc ebx, 0
shld ecx, eax, 7
shrd edi, ebx, 9
shl eax, 7
sar ebx, 9
add edi, eax
mov eax, dword [ebp - 0xa78]
adc ebx, ecx
mov dword [ebp - 0x9ec], edi
mov ecx, dword [ebp - 0x9dc]
mov ah, byte [eax]
mov al, byte [ecx + 5]
cmp al, 0xd
jae 0x10258519
movzx eax, al
mov al, byte [eax + 0x105fc20c]
mov byte [ebp - 0x9c9], al
jmp 0x10258560
cmp al, 0x11
jae 0x10258532
movzx ecx, al
movsx eax, ah
mov al, byte [eax + ecx*8 + 0x105fc1b4]
mov byte [ebp - 0x9c9], al
jmp 0x10258560
cmp al, 0x19
jae 0x10258559
mov dl, byte [ecx + 0x15]
cmp dl, 0xff
je 0x10258559
movzx ecx, al
movsx eax, ah
lea ecx, [eax + ecx*8]
movsx eax, dl
mov al, byte [eax + ecx*8 + 0x105fbe00]
mov byte [ebp - 0x9c9], al
jmp 0x10258560
mov byte [ebp - 0x9c9], 0xff
mov eax, dword [ebp - 0x9e8]
xor esi, esi
movzx ecx, byte [eax + 0x64f1c]
mov eax, dword [ebp - 0x9d0]
mov eax, dword [eax + 0x1b5dc]
mov dword [ebp - 0x9e0], eax
mov eax, dword [ebp - 0x9dc]
mov dl, byte [eax + 0x86]
test ecx, ecx
je 0x10258773
cmp edi, 0xffffffff
jne 0x102585a6
cmp ebx, 0x7fffffff
je 0x10258773
mov eax, dword [ebp - 0xa1c]
mov al, byte [eax]
test al, al
je 0x102585be
cmp al, 2
je 0x102585be
test dl, dl
jne 0x10258773
mov eax, dword [ebp - 0x9d0]
mov edx, dword [ecx*4 + 0x105fc440]
mov dword [ebp - 0xa10], edx
mov ecx, dword [eax + 0x1b5e0]
test ecx, ecx
je 0x10258644
xor esi, esi
test ecx, ecx
jle 0x10258605
mov eax, dword [ebp - 0x9e0]
add eax, 0xd0
nop dword [eax]
cmp dword [eax + 4], ebx
jg 0x10258605
jl 0x102585fb
cmp dword [eax], edi
ja 0x10258605
inc esi
add eax, 0x40e8
cmp esi, ecx
jl 0x102585f0
cmp esi, edx
je 0x10258773
mov edi, dword [ebp - 0x9e0]
lea eax, [edx - 1]
cmp esi, eax
jge 0x1025864a
mov eax, edx
imul ecx, esi, 0x40e8
sub eax, esi
imul eax, eax, 0x40e8
add ecx, edi
sub eax, 0x40e8
push eax
push ecx
lea eax, [ecx + 0x40e8]
push eax
call fcn.10399e60
add esp, 0xc
jmp 0x1025864a
mov edi, dword [ebp - 0x9e0]
mov al, byte [ebp - 0x9c9]
mov ecx, 0x29
imul edx, esi, 0x40e8
mov esi, dword [ebp - 0x9dc]
add edx, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x9ec]
mov byte [edx + 0x40e0], al
mov eax, dword [ebp - 0xa1c]
mov dword [edx + 0xd0], edi
mov dword [edx + 0xd4], ebx
mov al, byte [eax]
test al, al
je 0x10258751
cmp al, 2
je 0x10258751
cmp dword [ebp - 0xa28], 0
je 0x10258751
cmp dword [ebp - 0xa24], 0
je 0x10258751
push dword [ebp - 0xa08]
call fcn.10251600
mov ecx, dword [ebp - 0x9dc]
add esp, 4
cmp byte [ecx + 0x88], 0
je 0x102586e6
movzx ecx, byte [ebp - 0x9c9]
cmp byte [ecx + ecx*2 + 0x105f2900], 0xd
jb 0x102586e6
mov ecx, 1
jmp 0x102586e8
xor ecx, ecx
cmp dword [ebp + 0x3c], 0
mov esi, dword [ebp - 0x9d8]
movups xmm0, xmmword [esi]
movups xmmword [edx + 0xa8], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmmword [edx + 0xb8], xmm0
movq xmm0, qword [esi + 0x20]
movq qword [edx + 0xc8], xmm0
je 0x10258751
cmp byte [esi + 0x20], 0
jne 0x10258720
test ecx, ecx
je 0x10258725
mov ecx, 4
mov esi, dword [ebp - 0x9d0]
lea eax, [esi + eax*8]
mov eax, dword [eax + ecx + 0x7c38]
mov ecx, dword [ebp - 0xa28]
add eax, dword [ecx]
mov dword [edx + 0xd8], eax
mov eax, dword [ebp - 0xa24]
mov eax, dword [eax]
mov dword [edx + 0xdc], eax
mov edx, dword [ebp - 0x9d0]
mov eax, dword [edx + 0x1b5e0]
inc eax
cmp eax, dword [ebp - 0xa10]
cmovge eax, dword [ebp - 0xa10]
mov dword [edx + 0x1b5e0], eax
jmp 0x10258779
mov edx, dword [ebp - 0x9d0]
cmp ebx, dword [ebp - 0xa58]
jg 0x102588ae
jl 0x10258793
cmp edi, dword [ebp - 0xa54]
jae 0x102588ae
mov eax, dword [ebp - 0xac0]
mov ecx, 0x29
mov dword [ebp - 0xa80], eax
mov eax, dword [ebp - 0xabc]
mov dword [ebp - 0xa68], eax
mov eax, dword [ebp - 0x9d8]
mov esi, dword [ebp - 0x9dc]
mov dword [ebp - 0xa54], edi
lea edi, [ebp - 0xbdc]
rep movsd dword es:[edi], dword [esi]
movups xmm0, xmmword [eax]
movzx esi, byte [edx + 0x1235]
lea edi, [edx + 0xe0]
mov dword [ebp - 0xa58], ebx
movups xmmword [ebp - 0xae8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebp - 0xaf8], xmm0
movq xmm0, qword [eax + 0x20]
mov eax, dword [ebp - 0xa28]
movq qword [ebp - 0xad8], xmm0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0xb08], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebp - 0xb18], xmm0
movq xmm0, qword [eax + 0x20]
mov eax, dword [ebp - 0xa24]
movq qword [ebp - 0xac8], xmm0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0xb28], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ebp - 0xb38], xmm0
movq xmm0, qword [eax + 0x20]
movzx eax, byte [edx + 0x23b80]
mov dword [ebp - 0xa6c], eax
movzx eax, byte [edi + 0x1154]
imul esi, eax
lea eax, [edx + 0x23b81]
movq qword [ebp - 0xad0], xmm0
push esi
push eax
lea eax, [ebp - 0x804]
push eax
call fcn.10399e60
push esi
push dword [edi + 0xfe8]
lea eax, [ebp - 0x404]
push eax
call fcn.10399e60
mov ecx, dword [ebp - 0xab8]
add esp, 0x18
mov eax, dword [ebp - 0xa2c]
mov dword [ecx + 0xa4], eax
mov eax, dword [ebp - 0x9f4]
mov dword [ecx + 0xa8], eax
cmp ebx, dword [ebp - 0x9fc]
jg 0x102588de
mov eax, dword [ebp - 0x9ec]
jl 0x102588c6
cmp eax, dword [ebp - 0x9f8]
jae 0x102588de
mov dword [ebp - 0x9f8], eax
mov eax, dword [ebp - 0x9e4]
mov dword [ebp - 0x9fc], ebx
mov dword [ebp - 0xa18], eax
mov esi, dword [ebp - 0x9d8]
movups xmm0, xmmword [ebp - 0x9b0]
mov edx, dword [ebp - 0xa7c]
xor ecx, ecx
mov ebx, dword [ebp - 0xa48]
movups xmmword [ebp - 0x970], xmm0
movq xmm0, qword [ebp - 0x9a0]
movq qword [ebp - 0x960], xmm0
mov eax, dword [ebp + ecx*4 - 0x970]
lea edx, [edx + 0x538]
mov dword [edx - 0x548], eax
mov eax, dword [ebp + ecx*4 - 0x964]
inc ecx
mov dword [edx - 0x538], eax
cmp ecx, ebx
jl 0x10258910
mov edi, dword [ebp - 0x9dc]
mov ebx, dword [ebp - 0x9d0]
jmp 0x10257c2a
mov esi, dword [ebp - 0x9d8]
mov ebx, dword [ebp - 0x9d0]
jmp 0x10257c2a
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
mov edx, 0x7fffffff
pop ebx
call fcn.10398bef
mov esp, ebp
pop ebp
ret