Function at 0x42b720
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x34
push ebx
mov ebx, dword [esp + 0x4c]
push ebp
mov ebp, dword [esp + 0x48]
push edi
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x20], eax
mov dword [esp + 0xc], ecx
cmp ebp, 1
jne 0x42b760
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
push edx
push eax
push ecx
call fcn.0042ab60
add esp, 0xc
pop edi
pop ebp
pop ebx
add esp, 0x34
ret
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
push esi
lea eax, [esp + 0x6c]
push eax
mov eax, dword [esp + 0x50]
push 1
push ecx
mov ecx, dword [esp + 0x54]
push ebx
push ebx
mov dword [esp + 0x3c], edx
lea edx, [esp + 0x68]
push edx
push ebp
push eax
push ecx
lea edx, [esp + 0x50]
push edx
mov eax, edi
call fcn.0042a0f0
movd xmm0, dword [esp + 0x58]
xorps xmm1, xmm1
cvtdq2ps xmm0, xmm0
cvtss2sd xmm1, xmm0
mulsd xmm1, qword [0x451340]
cvtpd2ps xmm1, xmm1
movss dword [esp + 0x48], xmm1
movd xmm1, dword [esp + 0x5c]
cvtdq2ps xmm1, xmm1
cvtss2sd xmm1, xmm1
mulsd xmm1, qword [0x451340]
add esp, 0x28
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
movss dword [esp + 0x1c], xmm0
cmp ebp, 2
jne 0x42ba4c
mov ecx, dword [esp + 0x3c]
xor edx, edx
xor esi, esi
mov dword [esp + 0x50], edx
test ecx, ecx
je 0x42b804
cmp ecx, 0x4000
je 0x42b804
mov edx, 8
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x54]
sub eax, edx
xor edx, edx
cmp ecx, 0x2000
mov ecx, dword [esp + 0x50]
setg dl
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x40]
add edx, ecx
sub dword [edi + 0x20], edx
cmp dword [esp + 0x14], esi
je 0x42b83e
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x48]
jmp 0x42b84a
mov edx, dword [esp + 0x48]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x14], edx
test ecx, ecx
je 0x42b8ce
cmp dword [esp + 0x24], esi
je 0x42b8b9
mov eax, dword [esp + 0x50]
movss xmm0, dword [edx + 4]
movss xmm1, dword [eax]
movss xmm2, dword [edx]
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
movss xmm1, dword [eax + 4]
cvtps2pd xmm1, xmm1
cvtps2pd xmm2, xmm2
mulsd xmm1, xmm2
subsd xmm0, xmm1
xorps xmm1, xmm1
comisd xmm1, xmm0
jbe 0x42b8a5
mov eax, dword [esp + 0x10]
mov esi, 1
push esi
push esi
push eax
call fcn.00424b20
add esp, 0xc
jmp 0x42b8ca
mov eax, dword [esp + 0x10]
push 1
xor esi, esi
push esi
push eax
call fcn.00424b20
add esp, 0xc
jmp 0x42b8ca
mov ecx, dword [esp + 0x10]
push 1
push ecx
call fcn.00415900
add esp, 8
mov esi, eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
movss xmm0, dword [0x451430]
push ecx
lea edx, [esi + esi]
mov esi, 1
sub esi, edx
mov edx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x70]
movss dword [esp], xmm0
push ecx
mov ecx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x64]
push ecx
push ebx
push eax
push 2
push edx
push edi
call fcn.0042b360
mov ecx, dword [esp + 0x7c]
movss xmm0, dword [ecx + 4]
mov dword [esp + 0x3c], eax
cvtps2pd xmm0, xmm0
mov eax, esi
neg eax
xorps xmm1, xmm1
cvtsi2ss xmm1, eax
mov eax, dword [esp + 0x40]
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [eax], xmm0
movss xmm1, dword [ecx]
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
add esp, 0x2c
movss dword [eax + 4], xmm0
cmp dword [edi + 4], 0
je 0x42bbb5
mov ecx, dword [esp + 0x48]
movss xmm0, dword [ecx]
cvtps2pd xmm1, xmm0
movss xmm0, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
cvtps2pd xmm2, xmm0
mulsd xmm1, xmm2
cvtpd2ps xmm1, xmm1
movss dword [ecx], xmm1
movss xmm1, dword [ecx + 4]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
xorps xmm0, xmm0
cvtpd2ps xmm0, xmm1
movss xmm1, dword [esp + 0x1c]
movss dword [ecx + 4], xmm0
movss xmm0, dword [eax]
cvtps2pd xmm2, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
movss xmm2, dword [eax + 4]
cvtps2pd xmm1, xmm1
cvtpd2ps xmm0, xmm0
movss dword [eax], xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm1
xorps xmm1, xmm1
cvtpd2ps xmm1, xmm2
movss dword [eax + 4], xmm1
movss xmm1, dword [ecx]
cvtss2sd xmm0, xmm0
cvtps2pd xmm2, xmm1
subsd xmm2, xmm0
xorps xmm0, xmm0
cvtpd2ps xmm0, xmm2
movss dword [ecx], xmm0
movss xmm0, dword [eax]
movss xmm2, dword [eax + 4]
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
addsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [eax], xmm0
movss xmm0, dword [ecx + 4]
cvtps2pd xmm1, xmm0
cvtps2pd xmm2, xmm2
subsd xmm1, xmm2
cvtpd2ps xmm1, xmm1
movss dword [ecx + 4], xmm1
movss xmm1, dword [eax + 4]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
addsd xmm1, xmm0
xorps xmm0, xmm0
cvtpd2ps xmm0, xmm1
movss dword [eax + 4], xmm0
mov esi, eax
jmp 0x42bbb9
mov ecx, dword [esp + 0x54]
mov eax, ecx
sub eax, dword [esp + 0x38]
cdq
sub eax, edx
sar eax, 1
mov edx, ecx
cmp ecx, eax
jl 0x42ba63
mov edx, eax
test edx, edx
jns 0x42ba6b
xor esi, esi
jmp 0x42ba73
mov esi, ecx
cmp ecx, eax
jl 0x42ba73
mov esi, eax
sub ecx, esi
mov eax, ecx
mov ecx, dword [esp + 0x40]
sub dword [edi + 0x20], ecx
mov edx, dword [edi + 0x20]
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], edx
cmp esi, eax
jl 0x42bb2c
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
movss xmm0, dword [0x451430]
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
push ecx
push ecx
mov ecx, dword [esp + 0x68]
movss dword [esp], xmm0
push edx
mov edx, dword [esp + 0x58]
push eax
push ecx
push ebx
push esi
push ebp
push edx
push edi
call fcn.0042b360
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x20]
sub eax, dword [esp + 0x44]
add esp, 0x2c
add eax, esi
cmp eax, 0x18
jle 0x42baee
cmp dword [esp + 0x3c], 0
je 0x42baee
mov ecx, dword [esp + 0x50]
lea edx, [ecx + eax - 0x18]
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x6c]
movss xmm0, dword [esp + 0x1c]
mov esi, dword [esp + 0x4c]
mov ecx, ebx
sar eax, cl
push eax
mov eax, dword [esp + 0x64]
push 0
push ecx
mov ecx, dword [esp + 0x5c]
movss dword [esp], xmm0
push 0
push eax
push 0
push ebx
push ecx
push ebp
push esi
push edi
call fcn.0042b360
add esp, 0x2c
or dword [esp + 0x10], eax
jmp 0x42bbb9
mov edx, dword [esp + 0x6c]
mov ecx, ebx
sar edx, cl
push edx
mov edx, dword [esp + 0x50]
push 0
push ecx
mov ecx, dword [esp + 0x6c]
movss dword [esp], xmm0
push 0
push ecx
push 0
push ebx
push eax
push ebp
push edx
push edi
call fcn.0042b360
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x20]
sub eax, dword [esp + 0x44]
add esp, 0x2c
add eax, dword [esp + 0x50]
cmp eax, 0x18
jle 0x42bb79
cmp dword [esp + 0x3c], 0x4000
je 0x42bb79
lea esi, [esi + eax - 0x18]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
movss xmm0, dword [0x451430]
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
push ecx
push ecx
mov ecx, dword [esp + 0x68]
movss dword [esp], xmm0
push edx
mov edx, dword [esp + 0x58]
push eax
push ecx
push ebx
push esi
push ebp
push edx
push edi
call fcn.0042b360
add esp, 0x2c
or dword [esp + 0x10], eax
mov esi, dword [esp + 0x4c]
cmp dword [edi + 4], 0
je 0x42bc62
cmp ebp, 2
je 0x42bbe7
movss xmm0, dword [esp + 0x20]
mov eax, dword [esp + 0x48]
push ecx
movss dword [esp], xmm0
push esi
push eax
mov eax, dword [edi + 0x2c]
mov ecx, ebp
call fcn.00429290
add esp, 0xc
cmp dword [esp + 0x2c], 0
je 0x42bc62
movss xmm0, dword [0x451420]
xor ecx, ecx
cmp ebp, 4
jl 0x42bc48
lea edx, [ebp - 4]
shr edx, 2
inc edx
lea eax, [esi + 8]
lea ecx, [edx*4]
mov edi, edi
movss xmm1, dword [eax - 8]
xorps xmm1, xmm0
movss dword [eax - 8], xmm1
movss xmm1, dword [eax - 4]
xorps xmm1, xmm0
movss dword [eax - 4], xmm1
movss xmm1, dword [eax]
xorps xmm1, xmm0
movss dword [eax], xmm1
movss xmm1, dword [eax + 4]
xorps xmm1, xmm0
movss dword [eax + 4], xmm1
add eax, 0x10
dec edx
jne 0x42bc10
cmp ecx, ebp
jge 0x42bc62
lea esp, [esp]
movss xmm1, dword [esi + ecx*4]
xorps xmm1, xmm0
movss dword [esi + ecx*4], xmm1
inc ecx
cmp ecx, ebp
jl 0x42bc50
mov eax, dword [esp + 0x10]
pop esi
pop edi
pop ebp
pop ebx
add esp, 0x34
ret