Function at 0x41570f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov eax, dword [0x4b507c]
mov esi, dword [ebp + 0xc]
xor eax, ebp
mov dword [esp + 0x40], eax
xor eax, eax
push eax
push eax
push esi
call fcn.00413cd4
add esp, 0xc
test eax, eax
je 0x415751
push 0x71c
push 0x4acefc
push 0x4af48a
call fcn.0047b3ef
add esp, 0xc
mov ebx, dword [esi]
test ebx, ebx
mov dword [esp + 0x28], ebx
je 0x4157eb
mov ecx, dword [esi + 4]
pxor xmm1, xmm1
xor eax, eax
xor edx, edx
pxor xmm0, xmm0
mov esi, eax
mov eax, dword [ecx + edx*4]
movdqa xmm5, xmm1
psrlq xmm5, 0x20
mov edi, eax
movd xmm2, eax
and eax, 1
shr edi, 1
shufps xmm1, xmm2, 0x8e
or eax, edi
psllq xmm1, 0x20
neg eax
por xmm1, xmm5
mov edi, eax
shr edi, 0x1f
neg edi
movd xmm3, edi
mov edi, 0
sbb edi, edi
sar eax, 0x1f
movd xmm4, edi
mov edi, edx
inc edx
punpckldq xmm3, xmm4
movdqa xmm4, xmm1
xor edi, esi
pshufd xmm2, xmm3, 0x44
and eax, edi
pand xmm4, xmm2
pandn xmm2, xmm0
xor eax, esi
cmp ebx, edx
movdqa xmm0, xmm2
por xmm0, xmm4
jne 0x41576e
shl eax, 5
mov ecx, 0x60
sub ecx, eax
mov dword [esp + 0x24], ecx
jmp 0x4157f7
pxor xmm0, xmm0
mov dword [esp + 0x24], 0x60
mov edx, 4
mov dword [esp + 0x1c], 0
xor eax, eax
mov ecx, edx
pshufd xmm1, xmm0, 0xe5
mov dword [esp + 8], edx
mov dl, 0x20
mov edi, 0
mov ch, 0x20
movdqa xmm5, xmm0
inc eax
shl eax, cl
mov cl, 0x40
mov dword [esp + 0x10], eax
sub cl, al
movd eax, xmm1
pshufd xmm1, xmm0, 0xe7
mov esi, eax
shr esi, cl
test cl, dl
mov ebx, esi
cmovne ebx, edi
xor edi, edi
mov dword [esp + 0xc], ebx
movd ebx, xmm0
shrd ebx, eax, cl
test cl, dl
cmovne ebx, esi
mov dword [esp + 4], ebx
movd ebx, xmm1
pshufd xmm1, xmm0, 0x4e
mov edx, ebx
movss xmm2, dword [esp + 4]
shr edx, cl
test cl, ch
mov esi, edx
cmovne esi, edi
movd edi, xmm1
movss xmm1, dword [esp + 0xc]
mov eax, edi
shufps xmm5, xmm2, 0x84
shrd eax, ebx, cl
test cl, ch
cmovne eax, edx
mov edx, esi
shld edx, eax, 0x1f
xor ecx, ecx
shr esi, 1
shufps xmm1, xmm5, 0x20
movdqa xmm5, xmm0
inc ecx
shufps xmm5, xmm1, 0x24
and eax, ecx
mov ecx, dword [esp + 0x10]
movaps xmm1, xmm5
or eax, edx
mov edx, 0
neg eax
mov eax, ebx
mov bl, 0x20
sbb edx, esi
xor esi, esi
dec esi
shld eax, edi, cl
shl edi, cl
movd xmm2, ecx
xor edx, esi
mov esi, edx
shr esi, 0x1f
test cl, bl
mov ebx, 0
cmovne eax, edi
cmovne edi, ebx
mov ebx, dword [esp + 0x1c]
movd xmm3, eax
mov eax, 0
movd xmm4, edi
punpckldq xmm4, xmm3
punpcklqdq xmm2, xmm4
add ecx, ebx
neg esi
psllq xmm1, xmm2
por xmm2, xmm5
sbb eax, eax
xor ecx, ebx
sar edx, 0x1f
movd xmm6, esi
movsd xmm2, xmm1
and edx, ecx
movd xmm7, eax
mov eax, ebx
xor edx, ebx
punpckldq xmm6, xmm7
xor eax, eax
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 8]
pshufd xmm1, xmm6, 0x44
dec eax
andpd xmm2, xmm1
pandn xmm1, xmm0
movdqa xmm0, xmm1
por xmm0, xmm2
add edx, eax
jb 0x415804
pshufd xmm0, xmm0, 0xe7
mov esi, 0x90d876cd
mov edi, 0
mov ebx, 0
movd ecx, xmm0
lea edx, [esi + 0x2028d09]
mov eax, ecx
mul edx
mov eax, 0x90d876cd
shr edx, 2
sub eax, edx
sbb edi, edi
add eax, 0x6565fb1d
adc edi, 0
mul ecx
mov eax, 0x90d876cd
imul edi, ecx
add edx, edi
mov edi, 0
shr edx, 2
sub eax, edx
sbb edi, edi
add eax, 0x255eab1b
adc edi, 0
mul ecx
mov eax, 0x90d876cd
imul edi, ecx
add edx, edi
mov edi, 0
shr edx, 1
sub eax, edx
sbb edi, edi
add eax, 0xb552941
adc edi, 0
mul ecx
mov eax, 0x90d876cd
imul edi, ecx
add edx, edi
mov edi, 0
sub eax, edx
sbb edi, edi
add eax, 0x1a0194eb
adc edi, 0
mul ecx
imul edi, ecx
add edx, edi
mov edi, edx
shld edx, eax, 1
mov eax, 0x90d876cd
shr edi, 0x1f
sub eax, edx
sbb ebx, edi
add eax, 0x66845d36
adc ebx, 0
mul ecx
imul ebx, ecx
add edx, ebx
mov ebx, 0
mov edi, edx
shld edx, eax, 1
mov eax, 0x90d876cd
shr edi, 0x1f
sub eax, edx
sbb ebx, edi
add eax, 0x5c210374
adc ebx, 0
mul ecx
imul ebx, ecx
add edx, ebx
mov ebx, 0
mov edi, edx
shld edx, eax, 1
shr edi, 0x1f
sub esi, edx
sbb ebx, edi
mov eax, esi
xor edi, edi
xor esi, esi
imul ebx, ecx
mul ecx
mov ecx, 0x682799a0
add edx, ebx
xor ebx, ebx
shld edx, eax, 6
sub ecx, edx
mov dword [esp + 8], ecx
mov ecx, 4
xor edx, edx
mov dword [esp + 0x14], ecx
mov ch, 0x20
mov dword [esp + 0xc], ebx
mov eax, 0
mov dword [esp + 0x20], edi
inc edx
shl edx, cl
mov cl, dl
shl ebx, cl
test dl, ch
mov dword [esp + 4], ebx
cmovne ebx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xc]
shld dword [esp + 8], eax, cl
test dl, ch
mov eax, dword [esp + 8]
cmovne eax, dword [esp + 4]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, edi
shl eax, cl
test dl, ch
mov ecx, 0
mov esi, eax
cmovne esi, ecx
mov ecx, edx
mov dword [esp + 0x18], esi
mov esi, dword [esp + 4]
shld esi, edi, cl
mov cl, 0x20
mov edi, dword [esp + 0xc]
test dl, cl
mov ecx, dword [esp + 0x14]
cmovne esi, eax
mov al, 0x40
sub al, dl
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x10]
shr edx, cl
xor ecx, ecx
inc ecx
and edx, ecx
mov ecx, eax
shrd edi, esi, cl
mov esi, dword [esp + 0x10]
shr esi, cl
mov cl, 0x20
test al, cl
mov eax, 0
mov ecx, dword [esp + 0x20]
cmovne edi, esi
cmovne esi, eax
mov eax, 0
or edi, dword [esp + 0x18]
or esi, dword [esp + 0x2c]
xor esi, dword [esp + 4]
xor edi, ecx
neg edx
sbb eax, eax
and edi, edx
xor edi, ecx
mov ecx, dword [esp + 8]
and esi, eax
xor esi, dword [esp + 4]
xor ecx, dword [esp + 0x10]
and ecx, eax
mov eax, dword [esp + 0xc]
xor ecx, dword [esp + 0x10]
xor ebx, eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x14]
and ebx, edx
xor ebx, eax
add ecx, 0xffffffff
jb 0x415a53
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x28]
mov ecx, 0xbf
mov dword [esp + 0x18], 0xbf
add edx, dword [eax]
xor eax, eax
shl edx, 5
or edx, 3
sub edx, ecx
cmovb edx, eax
add edx, 0x1f
and edx, 0xffffffe0
lea ecx, [edx + 0xe0]
mov dword [esp + 0x28], edx
shr ecx, 5
mov dword [esp + 0x10], ecx
call fcn.0041307f
mov ecx, eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov dword [esp + 0xc], ecx
add edx, eax
add dword [esp + 0x18], eax
shr edx, 5
mov eax, edx
mov dword [esp + 0x24], edx
mov edx, ecx
push eax
push dword [esp + 0xc]
push ebx
call fcn.00415f3a
add esp, 0xc
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
add eax, 2
mov edx, ecx
push eax
push esi
push edi
call fcn.00415f3a
add esp, 0xc
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.0041307f
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov edx, eax
add ecx, 0xc0
shr ecx, 5
mov edi, ecx
mov ecx, eax
push edi
push 0
push 1
call fcn.00415f3a
add esp, 0xc
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
add ecx, esi
call fcn.0041307f
mov ecx, dword [eax]
mov ebx, eax
cmp esi, ecx
cmova ecx, esi
call fcn.0041307f
add esi, dword [eax]
mov edi, eax
mov ecx, esi
call fcn.0041307f
mov ecx, dword [esp + 0xc]
mov esi, eax
mov eax, dword [edi]
mov dword [esp + 0x10], edi
mov edx, dword [esi]
mov ecx, dword [ecx]
cmp ecx, eax
cmova eax, ecx
cmp eax, edx
cmova eax, edx
mov edx, dword [ebp + 0xc]
add eax, eax
mov edx, dword [edx]
cmp ecx, edx
cmova edx, ecx
mov ecx, dword [ebx]
cmp edx, ecx
cmova edx, ecx
lea ecx, [eax + eax*2]
add edx, edx
lea eax, [edx + edx*2]
cmp eax, ecx
cmova ecx, eax
call fcn.0041307f
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esi]
mov dword [esp + 4], esi
shr ecx, 5
mov edx, eax
cmp eax, ecx
mov dword [esp + 0x18], ecx
cmovb ecx, eax
sub edx, ecx
cmp edx, eax
cmovae edx, eax
shl ecx, 2
mov eax, dword [ebp + 8]
add ecx, dword [esi + 4]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], ecx
mov ecx, 4
mov eax, dword [eax]
shl eax, 5
or ecx, eax
cmp ecx, 0x15
jb 0x415d27
mov esi, dword [esp + 0x14]
mov edi, 0x14
mov dword [esp + 8], ebx
mov dword [esp + 0x20], ecx
mov edx, dword [esp + 0xc]
mov ecx, ebx
push dword [esi + 4]
push dword [esi]
push dword [ebp + 0xc]
call fcn.00413d97
add esp, 0xc
mov ebx, dword [esp + 0x10]
mov edx, dword [ebx]
mov ecx, dword [ebx + 4]
push 1
xor eax, eax
dec eax
push eax
push eax
push dword [esp + 0x14]
push dword [esp + 0x2c]
call fcn.00413b24
add esp, 0x14
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0xc]
push dword [esi + 4]
push dword [esi]
push ebx
call fcn.00413d97
add esp, 0xc
push 0x1f
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x14]
mov ebx, dword [esp + 0x14]
call fcn.00413716
mov ecx, dword [esp + 0x2c]
add esp, 0xc
lea edi, [edi + edi - 1]
cmp edi, ecx
jb 0x415cb8
push ebx
call fcn.00413137
add esp, 4
push dword [esp + 0x10]
call fcn.00413137
add esp, 4
push dword [esp + 4]
call fcn.00413137
add esp, 4
push dword [esp + 0x14]
call fcn.00413137
add esp, 4
mov edi, dword [ebp + 8]
mov esi, dword [esp + 0xc]
mov ecx, dword [edi]
add ecx, dword [esi]
call fcn.0041307f
mov ebx, eax
push edi
push esi
push eax
call fcn.004137a3
add esp, 0xc
mov eax, dword [ebx]
mov edx, dword [esp + 0x18]
lea esi, [esp + 0x30]
mov dword [esp + 0x20], ebx
cmp eax, edx
mov ecx, eax
cmovb edx, eax
sub ecx, edx
cmp ecx, eax
cmovae ecx, eax
shl edx, 2
add edx, dword [ebx + 4]
mov dword [esi], ecx
mov dword [esi + 4], edx
mov ecx, dword [edi]
call fcn.0041307f
mov ebx, eax
push 0x1f
push esi
push eax
call fcn.00413716
add esp, 0xc
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi]
call fcn.0041307f
mov esi, eax
push edi
mov dword [esp + 0x18], ebx
push ebx
push eax
call fcn.004137a3
add esp, 0xc
mov edx, dword [esi]
mov ecx, dword [esi + 4]
push 1
xor eax, eax
dec eax
push eax
push eax
mov dword [esp + 0x10], esi
push esi
push dword [ebp + 8]
call fcn.00413b24
add esp, 0x14
mov esi, dword [esp + 4]
mov al, 1
xor ebx, ebx
mov dword [esp + 8], eax
push edi
push esi
call fcn.00413bb2
add esp, 8
xor ecx, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esi]
inc ecx
and eax, ecx
neg eax
mov edi, eax
and edi, ecx
mov ecx, dword [esi + 4]
push edi
mov edi, dword [ebp + 0xc]
push eax
push eax
push edi
push esi
call fcn.00413b24
add esp, 0x14
add ebx, dword [esp + 0x10]
test byte [esp + 8], 1
mov eax, 0
jne 0x415dec
push 0
push ebx
mov eax, dword [esp + 0x1c]
push eax
push eax
call fcn.004133b2
add esp, 0x10
push edi
push dword [esp + 8]
call fcn.00413bb2
add esp, 8
test eax, eax
je 0x415e67
push 0x82d
push 0x4acefc
push 0x4af204
call fcn.0047b3ef
add esp, 0xc
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
test eax, eax
je 0x415ead
mov ecx, dword [esp + 0x14]
mov ebx, eax
mov eax, dword [eax]
mov esi, dword [ecx]
cmp eax, esi
cmovb esi, eax
lea edi, [esi*4]
push edi
push dword [ecx + 4]
push dword [ebx + 4]
call fcn.00471c60
add esp, 0xc
mov eax, dword [ebx]
add edi, dword [ebx + 4]
sub eax, esi
shl eax, 2
push eax
push edi
call fcn.00467374
mov ecx, dword [ebp + 0x14]
add esp, 8
mov ebx, dword [esp + 4]
test ecx, ecx
je 0x415eee
mov eax, dword [ecx]
mov esi, dword [ebx]
cmp eax, esi
cmovb esi, eax
lea edi, [esi*4]
push edi
push dword [ebx + 4]
push dword [ecx + 4]
mov ebx, ecx
call fcn.00471c60
add esp, 0xc
mov eax, dword [ebx]
add edi, dword [ebx + 4]
mov ebx, dword [esp + 4]
sub eax, esi
shl eax, 2
push eax
push edi
call fcn.00467374
add esp, 8
push dword [esp + 0xc]
call fcn.00413137
add esp, 4
push dword [esp + 0x1c]
call fcn.00413137
add esp, 4
push dword [esp + 0x20]
call fcn.00413137
add esp, 4
push dword [esp + 0x14]
call fcn.00413137
add esp, 4
push ebx
call fcn.00413137
add esp, 4
mov ecx, dword [esp + 0x40]
xor ecx, ebp
call fcn.0046f0c8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret