Function at 0x41c220
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 + 0x20], edx
mov eax, dword [0x4f6e34]
xor eax, esp
mov dword [esp + 0xe4], eax
test edx, edx
je 0x41c8f7
mov eax, edx
mov esi, dword [eax + 0x120]
test esi, esi
je 0x41c8d6
push esi
call fcn.00410f20
add esp, 4
test eax, eax
je 0x41c85d
cmp dword [esi + 0xa0], 0
je 0x41c832
cmp dword [esi + 0x14f10], 0
jle 0x41c8b5
mov eax, dword [esi + 0x14f24]
cmp eax, dword [ebp + 0x10]
ja 0x41c809
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x1c], edx
test edx, edx
je 0x41c897
push eax
push 0
push dword [esp + 0x24]
call fcn.00449a20
add esp, 0xc
mov eax, esi
mov edx, dword [esp + 0x1c]
call fcn.0041c920
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 [esi + 0x9c], 0
jne 0x41c5a7
mov edi, dword [esi + 0x14f10]
test edi, edi
jle 0x41c5fb
movups xmm3, xmmword [0x48b0e0]
pxor xmm0, xmm0
rcpps xmm1, xmm3
cvtsi2ss xmm0, dword [esi + 0x14f04]
mulps xmm3, xmm1
cvtss2sd xmm0, xmm0
mulps xmm3, xmm1
addps xmm1, xmm1
pxor xmm4, xmm4
xor eax, eax
cvtsi2ss xmm4, edi
subps xmm1, xmm3
dec edi
movss dword [esp + 0x18], xmm4
movsd qword [esp + 0x10], xmm0
movdqu xmm5, xmmword [0x48b0d0]
movd xmm2, edi
shufps xmm4, xmm4, 0
pshufd xmm2, xmm2, 0
unpcklpd xmm0, xmm0
mov ebx, dword [esi + 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 + 0x24], esi
mov esi, eax
cvtdq2ps xmm0, xmmword [esp + 0x70]
mulps xmm0, xmmword [esp + 0x30]
mulps xmm0, xmmword [esp + 0x40]
call fcn.0044d3e0
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 [0x48b0f0]
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 [0x48b100]
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 [0x48b110]
packuswb xmm2, xmm1
movdqu xmm3, xmmword [esp + 0x70]
movd dword [esp + esi + 0x81], xmm2
add esi, 4
paddd xmm3, xmmword [0x48b0c0]
movdqu xmmword [esp + 0x70], xmm3
cmp esi, 0x60
jb 0x41c39a
movss xmm0, dword [0x48b150]
mulss xmm0, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
shufps xmm0, xmm0, 0
call fcn.0044d3e0
cvttss2si ecx, xmm0
cmp edi, ecx
pxor xmm1, xmm1
movss xmm0, dword [0x48b154]
cmovl ecx, edi
mulss xmm0, dword [esp + 0x18]
cvtsi2ss xmm1, dword [ebx + ecx*4]
cvtss2sd xmm1, xmm1
mulsd xmm1, qword [0x48b120]
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.0044d3e0
cvttss2si ecx, xmm0
cmp edi, ecx
pxor xmm1, xmm1
movss xmm0, dword [esp + 0x18]
cmovl ecx, edi
mulss xmm0, dword [0x48b158]
cvtsi2ss xmm1, dword [ebx + ecx*4]
cvtss2sd xmm1, xmm1
mulsd xmm1, qword [0x48b120]
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.0044d3e0
cvttss2si edx, xmm0
cmp edi, edx
pxor xmm1, xmm1
movsd xmm2, qword [0x48b120]
cmovl edx, edi
mov ecx, 0xff
cvtsi2ss xmm1, dword [ebx + edx*4]
cvtss2sd xmm1, xmm1
mulsd xmm2, xmm1
divsd xmm2, qword [esp + 0x10]
cvttsd2si edi, xmm2
cmp edi, 0xff
cmovl ecx, edi
mov byte [esp + 0xe3], cl
jmp 0x41c5fb
xor ebx, ebx
mov dword [esp + 0x24], esi
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 0x41c5af
mov esi, dword [esp + 0x24]
mov byte [esp + 0xe3], 0xfc
mov ebx, dword [esi + 0x1c]
cmp dword [esi + 0xa4], 0
lea edx, [ebx - 2]
cmovne ebx, edx
cmp dword [esi + 0x6c], 0
jne 0x41c62d
mov edx, dword [esp + 0x1c]
mov byte [ebx + edx], 0x49
mov byte [ebx + edx + 1], 0x6e
mov byte [ebx + edx + 2], 0x66
mov byte [ebx + edx + 3], 0x6f
add ebx, 4
jmp 0x41c647
mov edx, dword [esp + 0x1c]
mov byte [ebx + edx], 0x58
mov byte [ebx + edx + 1], 0x69
mov byte [ebx + edx + 2], 0x6e
mov byte [ebx + edx + 3], 0x67
add ebx, 4
mov edi, edx
xor edx, edx
mov byte [ebx + edi], dl
mov byte [ebx + edi + 1], dl
mov byte [ebx + edi + 2], dl
mov byte [ebx + edi + 3], 0xf
mov edx, dword [esi + 0x14f1c]
mov dword [esp + 0x10], edx
shr edx, 0x18
mov byte [ebx + edi + 4], dl
mov edx, dword [esp + 0x10]
shr edx, 0x10
mov byte [ebx + edi + 5], dl
mov edx, dword [esp + 0x10]
shr edx, 8
mov byte [ebx + edi + 6], dl
mov edx, dword [esp + 0x10]
mov byte [ebx + edi + 7], dl
mov edx, dword [esi + 0x14f20]
add edx, dword [esi + 0x14f24]
mov ecx, edx
shr ecx, 0x18
mov byte [ebx + edi + 8], cl
mov ecx, edx
shr ecx, 0x10
mov byte [ebx + edi + 9], cl
mov ecx, edx
shr ecx, 8
mov byte [ebx + edi + 0xa], cl
mov byte [ebx + edi + 0xb], dl
movups xmm0, xmmword [esp + 0x80]
movups xmmword [edi + ebx + 0xc], xmm0
mov dword [esp + 0x14], edx
movups xmm1, xmmword [esp + 0x90]
movups xmmword [edi + ebx + 0x1c], xmm1
movups xmm2, xmmword [esp + 0xa0]
movups xmmword [edi + ebx + 0x2c], xmm2
movups xmm3, xmmword [esp + 0xb0]
movups xmmword [edi + ebx + 0x3c], xmm3
movups xmm4, xmmword [esp + 0xc0]
movups xmmword [edi + ebx + 0x4c], xmm4
movups xmm5, xmmword [esp + 0xd0]
movups xmmword [edi + ebx + 0x5c], xmm5
mov edx, dword [esp + 0xe0]
mov dword [edi + ebx + 0x6c], edx
cmp dword [esi + 0xa4], 0
je 0x41c728
push dword [esp + 0x1c]
push esi
call fcn.00423dc0
add esp, 8
mov edx, ebx
add edx, 0x70
mov dword [esp + 0x18], edx
je 0x41c7bb
mov ecx, edx
xor eax, eax
shr ecx, 1
je 0x41c888
mov dword [esp + 0x24], esi
xor edx, edx
mov dword [esp + 0x10], ebx
mov esi, edi
movzx edi, byte [esi + edx*2]
mov ebx, eax
xor eax, edi
movzx eax, al
shr ebx, 8
xor ebx, dword [eax*4 + 0x48acc0]
movzx edi, bx
movzx ebx, byte [esi + edx*2 + 1]
mov eax, edi
xor edi, ebx
inc edx
and edi, 0xff
shr eax, 8
xor eax, dword [edi*4 + 0x48acc0]
movzx eax, ax
cmp edx, ecx
jb 0x41c74f
mov ebx, dword [esp + 0x10]
lea ecx, [edx + edx + 1]
mov esi, dword [esp + 0x24]
lea edx, [ecx - 1]
cmp edx, dword [esp + 0x18]
jae 0x41c7bd
mov edi, dword [esp + 0x1c]
mov edx, eax
shr edx, 8
movzx ecx, byte [ecx + edi - 1]
xor eax, ecx
movzx ecx, al
mov eax, edx
xor eax, dword [ecx*4 + 0x48acc0]
jmp 0x41c7bd
xor eax, eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
lea ecx, [edi + ebx + 0x70]
call fcn.0041caa0
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
mov eax, dword [esi + 0x14f24]
cmp ecx, dword [0x4f6e34]
jne 0x41c892
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
xor eax, eax
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
xor eax, eax
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, 1
jmp 0x41c794
call fcn.00466f40
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
jmp 0x41c84e
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
jmp 0x41c84e
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
jmp 0x41c84e
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xe4], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x41c892
jmp 0x41c84e