Function at 0x4298c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xf4
mov edx, dword [ebp + 8]
mov dword [esp + 0x24], edx
mov eax, dword [0x52cfb4]
xor eax, esp
mov dword [esp + 0xe4], eax
test edx, edx
je 0x42a05d
mov eax, edx
mov edi, dword [eax + 0x120]
test edi, edi
je 0x42a03c
push edi
call fcn.00410be0
add esp, 4
test eax, eax
je 0x429fc3
cmp dword [edi + 0xa0], 0
je 0x429f98
cmp dword [edi + 0x14f10], 0
jle 0x42a01b
mov eax, dword [edi + 0x14f24]
cmp eax, dword [ebp + 0x10]
ja 0x429f6f
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x20], edx
test edx, edx
je 0x429ffd
push eax
push 0
push dword [esp + 0x28]
call fcn.0048a380
add esp, 0xc
mov eax, edi
mov edx, dword [esp + 0x20]
call fcn.0042a090
pxor xmm7, xmm7
movdqu xmmword [esp + 0x80], xmm7
movdqu xmmword [esp + 0x90], xmm7
movdqu xmmword [esp + 0xa0], xmm7
movdqu xmmword [esp + 0xb0], xmm7
movdqu xmmword [esp + 0xc0], xmm7
movdqu xmmword [esp + 0xd0], xmm7
movd dword [esp + 0xe0], xmm7
cmp dword [edi + 0x9c], 0
jne 0x429c47
mov esi, dword [edi + 0x14f10]
test esi, esi
jle 0x429c9b
movups xmm3, xmmword [0x4beae0]
pxor xmm0, xmm0
rcpps xmm1, xmm3
cvtsi2ss xmm0, dword [edi + 0x14f04]
mulps xmm3, xmm1
cvtss2sd xmm0, xmm0
mulps xmm3, xmm1
addps xmm1, xmm1
pxor xmm4, xmm4
xor eax, eax
cvtsi2ss xmm4, esi
subps xmm1, xmm3
dec esi
movss dword [esp + 0x18], xmm4
movsd qword [esp + 0x10], xmm0
movdqu xmm5, xmmword [0x4bead0]
movd xmm2, esi
shufps xmm4, xmm4, 0
pshufd xmm2, xmm2, 0
unpcklpd xmm0, xmm0
mov ebx, dword [edi + 0x14f18]
movups xmmword [esp + 0x30], xmm1
movups xmmword [esp + 0x50], xmm0
movdqu xmmword [esp + 0x60], xmm2
movups xmmword [esp + 0x40], xmm4
movdqu xmmword [esp + 0x70], xmm5
mov dword [esp + 0x28], edi
mov edi, eax
cvtdq2ps xmm0, xmmword [esp + 0x70]
mulps xmm0, xmmword [esp + 0x30]
mulps xmm0, xmmword [esp + 0x40]
call fcn.0048e030
cvttps2dq xmm1, xmm0
movdqu xmm2, xmmword [esp + 0x60]
movdqa xmm5, xmm2
pcmpgtd xmm5, xmm1
pxor xmm1, xmm2
pand xmm5, xmm1
pxor xmm5, xmm2
movd edx, xmm5
pshuflw xmm3, xmm5, 0xee
punpckhqdq xmm5, xmm5
pshuflw xmm6, xmm5, 0xee
movd xmm0, dword [ebx + edx*4]
movd edx, xmm5
movd ecx, xmm3
movups xmm2, xmmword [0x4beaf0]
movd xmm3, dword [ebx + edx*4]
movd edx, xmm6
movd xmm4, dword [ebx + ecx*4]
punpckldq xmm0, xmm4
movups xmm4, xmmword [esp + 0x50]
movd xmm7, dword [ebx + edx*4]
punpckldq xmm3, xmm7
punpcklqdq xmm0, xmm3
cvtdq2ps xmm1, xmm0
cvtps2pd xmm5, xmm1
movhlps xmm1, xmm1
cvtps2pd xmm6, xmm1
mulpd xmm5, xmm2
mulpd xmm6, xmm2
divpd xmm5, xmm4
divpd xmm6, xmm4
cvttpd2dq xmm0, xmm5
cvttpd2dq xmm7, xmm6
punpcklqdq xmm0, xmm7
pxor xmm1, xmm1
movdqu xmm6, xmmword [0x4beb00]
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm6
pxor xmm6, xmm0
pand xmm2, xmm6
pxor xmm2, xmm0
pslld xmm2, 0x10
psrad xmm2, 0x10
packssdw xmm2, xmm1
pand xmm2, xmmword [0x4beb10]
packuswb xmm2, xmm1
movdqu xmm3, xmmword [esp + 0x70]
movd dword [esp + edi + 0x81], xmm2
add edi, 4
paddd xmm3, xmmword [0x4beac0]
movdqu xmmword [esp + 0x70], xmm3
cmp edi, 0x60
jb 0x429a3a
movss xmm0, dword [0x4beb50]
mulss xmm0, dword [esp + 0x18]
mov edi, dword [esp + 0x28]
shufps xmm0, xmm0, 0
call fcn.0048e030
cvttss2si ecx, xmm0
cmp esi, ecx
pxor xmm1, xmm1
movss xmm0, dword [0x4beb54]
cmovl ecx, esi
mulss xmm0, dword [esp + 0x18]
cvtsi2ss xmm1, dword [ebx + ecx*4]
cvtss2sd xmm1, xmm1
mulsd xmm1, qword [0x4beb20]
mov ecx, 0xff
divsd xmm1, qword [esp + 0x10]
cvttsd2si edx, xmm1
cmp edx, 0xff
shufps xmm0, xmm0, 0
cmovge edx, ecx
mov byte [esp + 0xe1], dl
call fcn.0048e030
cvttss2si ecx, xmm0
cmp esi, ecx
pxor xmm1, xmm1
movss xmm0, dword [esp + 0x18]
cmovl ecx, esi
mulss xmm0, dword [0x4beb58]
cvtsi2ss xmm1, dword [ebx + ecx*4]
cvtss2sd xmm1, xmm1
mulsd xmm1, qword [0x4beb20]
mov ecx, 0xff
divsd xmm1, qword [esp + 0x10]
cvttsd2si edx, xmm1
cmp edx, 0xff
shufps xmm0, xmm0, 0
cmovge edx, ecx
mov byte [esp + 0xe2], dl
call fcn.0048e030
cvttss2si edx, xmm0
cmp esi, edx
pxor xmm1, xmm1
movsd xmm2, qword [0x4beb20]
cmovl edx, esi
mov ecx, 0xff
cvtsi2ss xmm1, dword [ebx + edx*4]
cvtss2sd xmm1, xmm1
mulsd xmm2, xmm1
divsd xmm2, qword [esp + 0x10]
cvttsd2si esi, xmm2
cmp esi, 0xff
cmovl ecx, esi
mov byte [esp + 0xe3], cl
jmp 0x429c9b
xor ebx, ebx
mov dword [esp + 0x28], edi
xor ecx, ecx
mov eax, 0x51eb851f
lea esi, [ecx + 0xff]
imul esi
sar edx, 5
add ecx, 0x1fe
sar esi, 0x1f
mov eax, 0x51eb851f
sub edx, esi
mov edi, ecx
mov byte [esp + ebx*2 + 0x81], dl
imul ecx
sar edx, 5
sar edi, 0x1f
sub edx, edi
mov byte [esp + ebx*2 + 0x82], dl
inc ebx
cmp ebx, 0x31
jb 0x429c4f
mov edi, dword [esp + 0x28]
mov byte [esp + 0xe3], 0xfc
mov esi, dword [edi + 0x1c]
cmp dword [edi + 0xa4], 0
lea edx, [esi - 2]
cmovne esi, edx
cmp dword [edi + 0x6c], 0
jne 0x429ccd
mov edx, dword [esp + 0x20]
mov byte [esi + edx], 0x49
mov byte [esi + edx + 1], 0x6e
mov byte [esi + edx + 2], 0x66
mov byte [esi + edx + 3], 0x6f
add esi, 4
jmp 0x429ce7
mov edx, dword [esp + 0x20]
mov byte [esi + edx], 0x58
mov byte [esi + edx + 1], 0x69
mov byte [esi + edx + 2], 0x6e
mov byte [esi + edx + 3], 0x67
add esi, 4
mov eax, edx
xor edx, edx
mov byte [esi + eax], dl
mov byte [esi + eax + 1], dl
mov byte [esi + eax + 2], dl
mov byte [esi + eax + 3], 0xf
mov ecx, dword [edi + 0x14f1c]
mov dword [esp + 0x10], ecx
shr ecx, 0x18
mov byte [esi + eax + 4], cl
mov ecx, dword [esp + 0x10]
mov ebx, ecx
mov edx, ecx
shr ebx, 0x10
shr edx, 8
mov byte [esi + eax + 5], bl
mov byte [esi + eax + 6], dl
mov byte [esi + eax + 7], cl
mov edx, dword [edi + 0x14f20]
add edx, dword [edi + 0x14f24]
mov ebx, edx
mov ecx, edx
shr ebx, 0x10
mov byte [esi + eax + 9], bl
mov ebx, edx
shr ecx, 0x18
shr ebx, 8
mov byte [esi + eax + 8], cl
mov byte [esi + eax + 0xa], bl
mov byte [esi + eax + 0xb], dl
movups xmm0, xmmword [esp + 0x80]
movups xmmword [eax + esi + 0xc], xmm0
mov dword [esp + 0x18], edx
movups xmm1, xmmword [esp + 0x90]
movups xmmword [eax + esi + 0x1c], xmm1
movups xmm2, xmmword [esp + 0xa0]
movups xmmword [eax + esi + 0x2c], xmm2
movups xmm3, xmmword [esp + 0xb0]
movups xmmword [eax + esi + 0x3c], xmm3
movups xmm4, xmmword [esp + 0xc0]
movups xmmword [eax + esi + 0x4c], xmm4
movups xmm5, xmmword [esp + 0xd0]
movups xmmword [eax + esi + 0x5c], xmm5
mov ebx, dword [esp + 0xe0]
mov dword [eax + esi + 0x6c], ebx
cmp dword [edi + 0xa4], 0
lea ebx, [esi + 0x70]
je 0x429dc7
push dword [esp + 0x20]
push edi
call fcn.00431820
add esp, 8
mov edx, dword [esp + 0x20]
xor eax, eax
mov dword [esp + 0x1c], edx
cmp ebx, 8
jl 0x429e92
mov dword [esp + 0x10], esi
xor edx, edx
shr ebx, 3
mov dword [esp + 0x28], edi
mov esi, dword [esp + 0x20]
movzx ecx, byte [esi + edx*8 + 1]
shl ecx, 8
movzx edi, byte [esi + edx*8]
or ecx, edi
xor eax, ecx
movzx edi, al
shr eax, 8
movzx ecx, word [edi*2 + 0x4be6c0]
movzx eax, word [eax*2 + 0x4be4c0]
xor ecx, eax
movzx eax, byte [esi + edx*8 + 2]
movzx edi, word [eax*2 + 0x4be2c0]
xor ecx, edi
movzx eax, byte [esi + edx*8 + 3]
movzx edi, word [eax*2 + 0x4be0c0]
xor ecx, edi
movzx eax, byte [esi + edx*8 + 4]
movzx edi, word [eax*2 + 0x4bdec0]
xor ecx, edi
movzx eax, byte [esi + edx*8 + 5]
movzx edi, word [eax*2 + 0x4bdcc0]
xor ecx, edi
movzx eax, byte [esi + edx*8 + 6]
movzx edi, word [eax*2 + 0x4bdac0]
xor ecx, edi
movzx eax, byte [esi + edx*8 + 7]
inc edx
movzx eax, word [eax*2 + 0x4bd8c0]
xor eax, ecx
cmp edx, ebx
jb 0x429deb
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
lea ebx, [ecx + edx*8]
shl edx, 3
neg edx
mov dword [esp + 0x1c], ebx
lea ebx, [edx + esi + 0x70]
test ebx, ebx
je 0x429f23
mov ecx, ebx
shr ecx, 1
je 0x429ff3
mov dword [esp + 0x10], esi
xor edx, edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], edi
mov esi, dword [esp + 0x1c]
mov ebx, eax
movzx eax, al
movzx edi, byte [esi + edx*2]
xor eax, edi
shr ebx, 8
movzx edi, byte [esi + edx*2 + 1]
inc edx
movzx eax, word [eax*2 + 0x4bd8c0]
xor ebx, eax
movzx ebx, bx
invalid