Function at 0x42a0f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
mov edx, dword [esp + 0x44]
push ebx
push ebp
push esi
push edi
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [edi + 0xc]
mov ebx, dword [edi + 0x1c]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x24], eax
mov eax, dword [eax + 0x38]
mov dword [esp + 0x1c], ecx
movsx ecx, word [eax + ecx*2]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x10], ebx
mov ebx, dword [edi + 0x24]
xor esi, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], esi
lea ebx, [ecx + eax*8]
cmp edx, esi
je 0x42a141
cmp dword [esp + 0x40], 2
lea eax, [esi + 0x10]
je 0x42a146
mov eax, 4
mov ecx, ebx
sar ecx, 1
sub ecx, eax
mov eax, dword [esp + 0x44]
mov ebp, dword [eax]
mov eax, dword [esp + 0x40]
lea eax, [eax + eax - 1]
mov dword [esp + 0x50], eax
test edx, edx
je 0x42a16d
cmp dword [esp + 0x40], 2
jne 0x42a16d
dec dword [esp + 0x50]
mov eax, dword [esp + 0x50]
imul eax, ecx
add eax, ebp
cdq
idiv dword [esp + 0x50]
sub ebp, ebx
lea ecx, [ebp - 0x20]
cmp ecx, eax
cmovl eax, ecx
cmp eax, 0x40
jle 0x42a25c
mov eax, 0x40
mov edx, eax
and eax, 7
movsx ebp, word [eax*2 + 0x45219c]
sar edx, 3
mov ecx, 0xe
sub cl, dl
sar ebp, cl
inc ebp
and ebp, 0xfffffffe
cmp dword [esp + 0x54], esi
je 0x42a1c4
mov eax, dword [edi + 0x10]
cmp dword [esp + 0x1c], eax
jl 0x42a1c4
mov ebp, 1
mov ebx, dword [esp + 0x40]
cmp dword [esp + 0x14], esi
je 0x42a1ec
mov eax, dword [edi + 0x2c]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x3c]
push ebx
push ecx
push edx
push eax
call fcn.004281f0
add esp, 0x14
mov esi, eax
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00435590
add esp, 4
mov dword [esp + 0x2c], eax
cmp ebp, 1
je 0x42a725
cmp dword [esp + 0x14], 0
je 0x42a283
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x42a2c7
mov eax, dword [edi + 0x30]
mov dword [esp + 0x50], eax
test eax, eax
je 0x42a2c7
mov eax, 0x7fff
cmp esi, 0x2000
jg 0x42a23a
mov eax, 0xffff8001
cdq
idiv ebp
mov ecx, ebp
imul ecx, esi
xor edx, edx
add ecx, eax
sar ecx, 0xe
test ecx, ecx
sets dl
lea eax, [ebp - 1]
dec edx
and edx, ecx
cmp eax, edx
jge 0x42a26f
mov esi, eax
jmp 0x42a27b
cmp eax, 4
jge 0x42a193
mov ebp, 1
jmp 0x42a1b0
xor edx, edx
test ecx, ecx
sets dl
lea esi, [edx - 1]
and esi, ecx
cmp dword [esp + 0x50], 0
jl 0x42a283
inc esi
cmp dword [esp + 0x54], 0
je 0x42a339
cmp ebx, 2
jle 0x42a339
mov eax, ebp
cdq
sub eax, edx
mov edi, eax
sar edi, 1
cmp dword [esp + 0x14], 0
lea ebx, [edi + edi*2 + 3]
lea edx, [ebx + edi]
mov dword [esp + 0x50], edx
je 0x42a3b6
cmp esi, edi
jg 0x42a384
lea eax, [esi + esi*2 + 3]
jmp 0x42a38a
imul esi, ebp
add esi, 0x2000
sar esi, 0xe
test ecx, ecx
jne 0x42a28e
cmp dword [edi + 0x38], ecx
je 0x42a339
test esi, esi
jle 0x42a339
cmp esi, ebp
jge 0x42a339
mov eax, esi
shl eax, 0xe
xor edx, edx
div ebp
mov edi, eax
push edi
call fcn.00428860
movsx ecx, ax
add esp, 4
mov edx, 0x4000
push ecx
sub edx, edi
push edx
call fcn.00428860
cwde
add esp, 4
push eax
call fcn.004288c0
mov ecx, ebx
shl ecx, 7
add ecx, 0xffffff80
cwde
movsx edx, cx
mov ecx, dword [esp + 0x4c]
imul eax, edx
mov ecx, dword [ecx]
add eax, 0x4000
sar eax, 0xf
add esp, 8
cmp eax, ecx
jle 0x42a37a
mov esi, ebp
cmp dword [esp + 0x4c], 1
jg 0x42a4e0
cmp dword [esp + 0x54], 0
jne 0x42a4e0
mov eax, ebp
sar eax, 1
lea ebx, [eax + 1]
mov edi, ebx
imul edi, ebx
cmp dword [esp + 0x14], 0
mov dword [esp + 0x50], eax
je 0x42a45f
cmp esi, eax
jg 0x42a420
lea ecx, [esi + 1]
jmp 0x42a425
neg ecx
cmp eax, ecx
jge 0x42a339
xor esi, esi
jmp 0x42a339
mov eax, ebx
sub eax, edi
add eax, esi
cmp esi, edi
jg 0x42a393
lea ebx, [esi + esi*2]
jmp 0x42a399
sub ebx, edi
lea ebx, [ebx + esi - 1]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
push ecx
push eax
push ebx
push edx
call fcn.004249e0
mov ebx, dword [esp + 0x50]
add esp, 0x10
jmp 0x42a50e
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.004157b0
mov esi, eax
add esp, 8
cmp esi, ebx
jge 0x42a3de
mov eax, 0x55555556
imul esi
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x42a3e4
sub esi, ebx
lea esi, [esi + edi + 1]
cmp esi, edi
jg 0x42a3ee
lea eax, [esi + esi*2 + 3]
jmp 0x42a3f4
mov eax, ebx
sub eax, edi
add eax, esi
cmp esi, edi
jg 0x42a3fd
lea ebx, [esi + esi*2]
jmp 0x42a403
sub ebx, edi
lea ebx, [ebx + esi - 1]
mov edx, dword [esp + 0x50]
push edx
push eax
mov eax, dword [esp + 0x18]
push ebx
push eax
call fcn.00415830
mov ebx, dword [esp + 0x50]
add esp, 0x10
jmp 0x42a50e
mov ecx, ebp
sub ecx, esi
inc ecx
cmp esi, eax
jg 0x42a433
lea eax, [esi + 1]
imul eax, esi
sar eax, 1
jmp 0x42a444
mov eax, ebp
sub eax, esi
lea edx, [eax + 2]
inc eax
imul edx, eax
sar edx, 1
mov eax, edi
sub eax, edx
mov edx, dword [esp + 0x10]
push edi
add ecx, eax
push ecx
push eax
push edx
call fcn.004249e0
mov ebx, dword [esp + 0x50]
add esp, 0x10
jmp 0x42a50e
mov eax, dword [esp + 0x10]
push edi
push eax
call fcn.004157b0
imul ebx, dword [esp + 0x58]
sar ebx, 1
add esp, 8
cmp eax, ebx
jge 0x42a499
lea ecx, [eax*8 + 1]
push ecx
call fcn.004392d0
lea esi, [eax - 1]
shr esi, 1
lea ecx, [esi + 1]
mov eax, ecx
imul eax, esi
add esp, 4
sar eax, 1
jmp 0x42a4c8
mov edx, edi
sub edx, eax
lea eax, [edx*8 - 7]
push eax
call fcn.004392d0
lea esi, [ebp + ebp + 2]
sub esi, eax
shr esi, 1
mov eax, ebp
sub eax, esi
lea ecx, [eax + 1]
lea edx, [eax + 2]
imul edx, ecx
sar edx, 1
mov eax, edi
add esp, 4
sub eax, edx
mov edx, dword [esp + 0x10]
push edi
add ecx, eax
push ecx
push eax
push edx
call fcn.00415830
mov ebx, dword [esp + 0x50]
add esp, 0x10
jmp 0x42a50e
cmp dword [esp + 0x14], 0
je 0x42a4fb
mov ecx, dword [esp + 0x10]
lea eax, [ebp + 1]
push eax
push esi
push ecx
call fcn.00424d90
add esp, 0xc
jmp 0x42a50e
mov eax, dword [esp + 0x10]
lea edx, [ebp + 1]
push edx
push eax
call fcn.00415980
add esp, 8
mov esi, eax
mov eax, esi
shl eax, 0xe
xor edx, edx
div ebp
cmp dword [esp + 0x14], 0
mov esi, eax
je 0x42a9f3
cmp dword [esp + 0x54], 0
je 0x42a9f3
test esi, esi
jne 0x42a70c
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov edx, dword [edx + 8]
movss xmm0, dword [eax + ecx*4]
cvtps2pd xmm2, xmm0
mulsd xmm2, xmm2
add edx, ecx
movss xmm1, dword [eax + edx*4]
cvtps2pd xmm3, xmm1
mulsd xmm3, xmm3
movapd xmm4, xmm2
addsd xmm4, qword [0x451480]
addsd xmm4, xmm3
sqrtsd xmm3, xmm4
cvtpd2ps xmm3, xmm3
cvtss2sd xmm3, xmm3
addsd xmm3, qword [0x451480]
movsd qword [esp + 0x24], xmm2
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm3
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
cvtps2pd xmm3, xmm2
cvtps2pd xmm2, xmm2
xor ebp, ebp
divsd xmm0, xmm3
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm0
cvtpd2ps xmm1, xmm1
cmp ebx, 4
jl 0x42a6b6
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
lea eax, [edx + 4]
lea ecx, [edi + 0xc]
sub edi, edx
lea edx, [ebx - 4]
shr edx, 2
inc edx
lea ebp, [edx*4]
jmp 0x42a5e0
movss xmm2, dword [eax - 4]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [ecx - 0xc]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax - 4], xmm2
movss xmm2, dword [eax]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [edi + eax]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax], xmm2
movss xmm2, dword [eax + 4]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [ecx - 4]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
movss xmm3, dword [eax + 8]
cvtpd2ps xmm2, xmm2
movss dword [eax + 4], xmm2
xorps xmm2, xmm2
cvtps2pd xmm3, xmm3
cvtss2sd xmm2, xmm0
mulsd xmm2, xmm3
movss xmm3, dword [ecx]
xorps xmm4, xmm4
cvtps2pd xmm3, xmm3
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax + 8], xmm2
add eax, 0x10
add ecx, 0x10
dec edx
jne 0x42a5e0
cmp ebp, ebx
jge 0x42a9f3
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
lea eax, [ecx + ebp*4]
sub edx, ecx
mov ecx, ebx
sub ecx, ebp
nop
movss xmm2, dword [eax]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [eax + edx]
xorps xmm4, xmm4
cvtps2pd xmm3, xmm3
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax], xmm2
add eax, 4
dec ecx
jne 0x42a6d0
jmp 0x42a9f3
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push eax
push ecx
mov eax, ebx
call fcn.00429080
add esp, 8
jmp 0x42a9f3
xor ecx, ecx
cmp dword [esp + 0x54], ecx
je 0x42a9f3
cmp dword [esp + 0x14], ecx
je 0x42a997
cmp esi, 0x2000
jle 0x42a9c4
cmp dword [edi + 0x34], ecx
jne 0x42a9c4
movss xmm0, dword [0x451420]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x18], 1
cmp ebx, 4
jl 0x42a7b8
lea edx, [ebx - 4]
shr edx, 2
inc edx
lea eax, [esi + 8]
lea ecx, [edx*4]
lea ebx, [ebx]
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 0x42a780
cmp ecx, ebx
jge 0x42a7d2
lea esp, [esp]
movss xmm1, dword [esi + ecx*4]
xorps xmm1, xmm0
movss dword [esi + ecx*4], xmm1
inc ecx
cmp ecx, ebx
jl 0x42a7c0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov edx, dword [edx + 8]
movss xmm0, dword [ecx + eax*4]
cvtps2pd xmm2, xmm0
mulsd xmm2, xmm2
add edx, eax
movss xmm1, dword [ecx + edx*4]
cvtps2pd xmm3, xmm1
mulsd xmm3, xmm3
movapd xmm4, xmm2
addsd xmm4, qword [0x451480]
addsd xmm4, xmm3
sqrtsd xmm3, xmm4
cvtpd2ps xmm3, xmm3
cvtss2sd xmm3, xmm3
addsd xmm3, qword [0x451480]
movsd qword [esp + 0x24], xmm2
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm3
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
cvtps2pd xmm3, xmm2
cvtps2pd xmm2, xmm2
xor ebp, ebp
divsd xmm0, xmm3
divsd xmm1, xmm2
cvtpd2ps xmm0, xmm0
cvtpd2ps xmm1, xmm1
cmp ebx, 4
jl 0x42a94a
mov edx, dword [esp + 0x38]
lea eax, [edx + 4]
lea ecx, [esi + 0xc]
sub esi, edx
lea edx, [ebx - 4]
shr edx, 2
inc edx
lea ebp, [edx*4]
lea ecx, [ecx]
movss xmm2, dword [eax - 4]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [ecx - 0xc]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
movss xmm3, dword [eax]
cvtpd2ps xmm2, xmm2
movss dword [eax - 4], xmm2
xorps xmm2, xmm2
cvtps2pd xmm3, xmm3
cvtss2sd xmm2, xmm0
mulsd xmm2, xmm3
movss xmm3, dword [esi + eax]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
movss xmm3, dword [eax + 4]
cvtpd2ps xmm2, xmm2
movss dword [eax], xmm2
xorps xmm2, xmm2
cvtps2pd xmm3, xmm3
cvtss2sd xmm2, xmm0
mulsd xmm2, xmm3
movss xmm3, dword [ecx - 4]
cvtps2pd xmm3, xmm3
xorps xmm4, xmm4
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
movss xmm3, dword [eax + 8]
cvtpd2ps xmm2, xmm2
movss dword [eax + 4], xmm2
xorps xmm2, xmm2
cvtps2pd xmm3, xmm3
cvtss2sd xmm2, xmm0
mulsd xmm2, xmm3
movss xmm3, dword [ecx]
xorps xmm4, xmm4
cvtps2pd xmm3, xmm3
cvtss2sd xmm4, xmm1
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax + 8], xmm2
add eax, 0x10
add ecx, 0x10
dec edx
jne 0x42a870
mov esi, dword [esp + 0x3c]
cmp ebp, ebx
jge 0x42a997
mov ecx, dword [esp + 0x38]
lea eax, [ecx + ebp*4]
sub esi, ecx
mov ecx, ebx
sub ecx, ebp
jmp 0x42a960
movss xmm2, dword [eax + esi]
xorps xmm3, xmm3
cvtss2sd xmm3, xmm1
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm3
movss xmm3, dword [eax]
xorps xmm4, xmm4
cvtps2pd xmm3, xmm3
cvtss2sd xmm4, xmm0
mulsd xmm3, xmm4
addsd xmm2, xmm3
cvtpd2ps xmm2, xmm2
movss dword [eax], xmm2
add eax, 4
dec ecx
jne 0x42a960
mov eax, dword [esp + 0x44]
cmp dword [eax], 0x10
jle 0x42a9e4
cmp dword [edi + 0x20], 0x10
jle 0x42a9e4
xor esi, esi
push 2
cmp dword [esp + 0x18], esi
je 0x42a9d1
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
push ecx
push edx
call fcn.00424a90
add esp, 0xc
jmp 0x42a9ea
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
jmp 0x42a7d2
mov eax, dword [esp + 0x14]
push eax
call fcn.00415870
add esp, 8
mov dword [esp + 0x18], eax
jmp 0x42a9ea
xor esi, esi
mov dword [esp + 0x18], esi
cmp dword [edi + 0x34], esi
je 0x42a9f3
mov dword [esp + 0x18], esi
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00435590
mov ebp, eax
sub ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x48]
sub dword [eax], ebp
add esp, 4
test esi, esi
jne 0x42aa33
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
mov edx, 1
shl edx, cl
xor ebx, ebx
mov edi, 0x7fff
dec edx
and dword [eax], edx
mov eax, 0xffffc000
jmp 0x42ab3e
cmp esi, 0x4000
jne 0x42aa5d
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
mov edx, 1
shl edx, cl
xor edi, edi
mov ebx, 0x7fff
dec edx
shl edx, cl
and dword [eax], edx
mov eax, esi
jmp 0x42ab3e
movsx eax, si
imul eax, eax
add eax, 0x1000
sar eax, 0xd
movzx ecx, ax
movsx eax, cx
mov edx, eax
imul edx, edx, 0x272
mov edi, 0x4000
sub edi, edx
sar edi, 0xf
add edi, 0x2055
movsx edx, di
imul edx, eax
add edx, 0x4000
sar edx, 0xf
sub edx, 0x1de3
movsx edx, dx
imul edx, eax
mov eax, 0x4000
sub eax, esi
movzx eax, ax
cwde
add edx, 0x4000
imul eax, eax
sar edx, 0xf
sub edx, ecx
sub edx, 0x8000
movsx edi, dx
add eax, 0x1000
sar eax, 0xd
movzx ecx, ax
movsx eax, cx
mov edx, eax
imul edx, edx, 0x272
mov ebx, 0x4000
sub ebx, edx
sar ebx, 0xf
add ebx, 0x2055
movsx edx, bx
imul edx, eax
add edx, 0x4000
sar edx, 0xf
sub edx, 0x1de3
movsx edx, dx
imul edx, eax
add edx, 0x4000
sar edx, 0xf
sub edx, ecx
sub edx, 0x8000
movsx ebx, dx
push edi
push ebx
call fcn.004288c0
mov ecx, dword [esp + 0x48]
shl ecx, 7
add ecx, 0xffffff80
cwde
movsx ecx, cx
imul eax, ecx
add eax, 0x4000
add esp, 8
sar eax, 0xf
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
mov dword [ecx + 4], edi
pop edi
mov dword [ecx + 0x10], esi
pop esi
mov dword [ecx + 0x14], ebp
pop ebp
mov dword [ecx + 8], ebx
mov dword [ecx], edx
mov dword [ecx + 0xc], eax
pop ebx
add esp, 0x20
ret