Function at 0x423b00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x54
mov esi, dword [ebp + 0x14]
mov edx, dword [esi + 0x2c]
mov ecx, dword [edx]
mov dword [esp + 0x30], ecx
mov ecx, dword [edx + 8]
mov dword [esp + 4], ecx
mov ecx, dword [esi + 4]
mov eax, dword [edx + 4]
mov dword [esp + 0x2c], eax
mov edx, dword [ecx + 4]
mov dword [esp + 0x28], edx
mov eax, dword [edx + 0x18]
mov edi, dword [edx + 0xc]
mov ebx, dword [eax + 0x1c]
mov eax, dword [edx + 0x24]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x34]
mov dword [esp + 0x24], ebx
cmp eax, dword [edx + 0x38]
jl 0x423b56
mov dword [esp + 0x48], 0
jmp 0x423b71
mov ecx, edx
lea edx, [eax*4]
inc eax
imul edx, dword [ecx + 0x14]
add edx, dword [ecx + 0x3c]
mov dword [ecx + 0x34], eax
mov dword [esp + 0x48], edx
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 4]
mov dword [esp + 0x44], edi
mov ebx, dword [eax + 0xc]
mov eax, 1
lea edx, [ebx + ebx*2]
mov ebx, dword [esp + 0x30]
lea ecx, [ebx + 1]
shl eax, cl
mov ecx, dword [esi + 0x34]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
lea edx, [ecx + edx*4]
mov dword [esi + 0x34], edx
mov ecx, ebx
lea edi, [eax - 1]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x18], edi
movzx edx, word [edx]
add edx, edx
and edx, edi
movzx edx, dl
mov ebx, edx
sub eax, edx
shr ebx, cl
dec eax
dec ebx
not ebx
movzx ebx, bl
mov edi, ebx
and eax, ebx
not edi
and ebx, 1
and edx, edi
or eax, edx
mov edx, eax
shr eax, 1
and edx, 1
add eax, edx
push eax
push dword [esp + 8]
push dword [ebp + 8]
mov edi, dword [esp + 0x50]
call dword [esp + 0x38]
mov eax, dword [ebp + 8]
push dword [esp + 0x34]
lea edx, [eax + edi*4]
mov dword [esp + 0x1c], edx
push edx
push dword [esp + 0x5c]
call dword [esp + 0x3c]
add esp, 0x18
mov edx, ebx
dec ebx
not edx
and edx, ebx
shr edx, 0x1f
neg edx
not edx
test edi, edi
mov eax, edx
not eax
jle 0x4241b4
cmp edi, 6
jg 0x423c30
mov ebx, edi
shr ebx, 1
test ebx, ebx
ja 0x423dee
jmp 0x424590
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x48]
jae 0x423c52
mov ecx, dword [esp + 0x48]
lea ebx, [edi*4]
sub ecx, dword [esp + 0xc]
cmp ecx, ebx
jge 0x423c6b
jmp 0x423de2
jbe 0x423de2
lea ebx, [edi*4]
sub ecx, dword [esp + 0x48]
cmp ecx, ebx
jl 0x423de2
mov ebx, dword [esp + 0xc]
and ebx, 0xf
je 0x423c85
test bl, 3
jne 0x4245a2
neg ebx
add ebx, 0x10
shr ebx, 2
lea ecx, [ebx + 4]
cmp edi, ecx
jl 0x4245a2
mov ecx, edi
sub ecx, ebx
and ecx, 3
neg ecx
add ecx, edi
mov dword [esp], ecx
test ebx, ebx
jbe 0x423ce5
mov dword [esp + 0x10], edx
xor ecx, ecx
mov dword [esp + 0x44], edi
mov edx, dword [esp + 0xc]
nop dword [eax + eax]
nop dword [eax]
nop
mov esi, dword [esp + 0x48]
mov edi, dword [edx + ecx*4]
and edi, eax
mov esi, dword [esi + ecx*4]
and esi, dword [esp + 0x10]
xor esi, edi
mov dword [edx + ecx*4], esi
inc ecx
cmp ecx, ebx
jb 0x423cc0
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
mov esi, dword [ebp + 0x14]
mov ecx, dword [esp + 0x48]
lea ecx, [ecx + ebx*4]
test cl, 0xf
je 0x423d44
movd xmm1, edx
movd xmm0, eax
mov dword [esp + 0x44], edi
pshufd xmm1, xmm1, 0
pshufd xmm0, xmm0, 0
mov ecx, dword [esp + 0xc]
mov esi, dword [esp]
mov edi, dword [esp + 0x48]
nop dword [eax]
nop dword [eax]
movdqu xmm3, xmmword [edi + ebx*4]
movdqa xmm2, xmmword [ecx + ebx*4]
pand xmm3, xmm1
pand xmm2, xmm0
pxor xmm3, xmm2
movdqa xmmword [ecx + ebx*4], xmm3
add ebx, 4
cmp ebx, esi
jb 0x423d20
jmp 0x423da2
movd xmm1, edx
movd xmm0, eax
mov dword [esp + 0x44], edi
pshufd xmm1, xmm1, 0
pshufd xmm0, xmm0, 0
mov ecx, dword [esp + 0xc]
mov esi, dword [esp]
mov edi, dword [esp + 0x48]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
movdqa xmm3, xmmword [edi + ebx*4]
movdqa xmm2, xmmword [ecx + ebx*4]
pand xmm3, xmm1
pand xmm2, xmm0
pxor xmm3, xmm2
movdqa xmmword [ecx + ebx*4], xmm3
add ebx, 4
cmp ebx, esi
jb 0x423d80
mov dword [esp], esi
mov edi, dword [esp + 0x44]
mov esi, dword [ebp + 0x14]
cmp edi, dword [esp]
jbe 0x423e8b
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp]
mov ebx, dword [esp + 0x48]
mov esi, dword [eax + ecx*4]
and esi, dword [esp + 0x14]
mov ebx, dword [ebx + ecx*4]
and ebx, edx
xor ebx, esi
mov dword [eax + ecx*4], ebx
inc ecx
cmp ecx, edi
jb 0x423dc0
mov esi, dword [ebp + 0x14]
jmp 0x423e8b
mov ebx, edi
shr ebx, 1
test ebx, ebx
jbe 0x424602
mov dword [esp + 0x10], edx
xor ecx, ecx
mov dword [esp], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x44], edi
mov edx, dword [esp + 0xc]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov edi, dword [esp + 0x48]
mov ebx, dword [edx + ecx*8]
mov esi, dword [edi + ecx*8]
and ebx, eax
and esi, dword [esp + 0x10]
xor esi, ebx
mov dword [edx + ecx*8], esi
mov esi, dword [edi + ecx*8 + 4]
mov ebx, dword [edx + ecx*8 + 4]
and esi, dword [esp + 0x10]
and ebx, eax
xor esi, ebx
mov dword [edx + ecx*8 + 4], esi
inc ecx
cmp ecx, dword [esp]
jb 0x423e20
mov edi, dword [esp + 0x44]
lea ebx, [ecx + ecx + 1]
lea ecx, [ebx - 1]
mov edx, dword [esp + 0x10]
cmp ecx, edi
mov esi, dword [ebp + 0x14]
jae 0x423e82
mov esi, dword [esp + 0x48]
mov ecx, dword [esi + ebx*4 - 4]
mov esi, dword [esp + 0xc]
and ecx, edx
mov edx, dword [esi + ebx*4 - 4]
and edx, eax
xor ecx, edx
mov dword [esi + ebx*4 - 4], ecx
mov esi, dword [ebp + 0x14]
cmp edi, 6
jle 0x423fda
mov edx, dword [ebp + 8]
lea eax, [edi*8]
mov dword [esp], eax
lea edx, [edx + edi*8]
cmp edx, dword [esp + 8]
jae 0x423eb7
mov eax, dword [esp + 8]
lea ecx, [edi*4]
sub eax, edx
cmp eax, ecx
jge 0x423ed2
jmp 0x423fcd
jbe 0x423fcd
mov eax, edx
lea ecx, [edi*4]
sub eax, dword [esp + 8]
cmp eax, ecx
jl 0x423fcd
cmp edi, 4
jl 0x423f93
mov ebx, edx
and ebx, 0xf
je 0x423ef3
test bl, 3
jne 0x423f93
neg ebx
add ebx, 0x10
shr ebx, 2
lea eax, [ebx + 4]
cmp edi, eax
jl 0x423f93
mov ecx, edi
sub ecx, ebx
and ecx, 3
neg ecx
add ecx, edi
test ebx, ebx
jbe 0x423f32
mov dword [esp + 0x44], edi
xor eax, eax
mov edi, dword [esp + 8]
nop word [eax + eax]
mov esi, dword [edi + eax*4]
mov dword [edx + eax*4], esi
inc eax
cmp eax, ebx
jb 0x423f20
mov edi, dword [esp + 0x44]
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 8]
lea eax, [eax + ebx*4]
test al, 0xf
je 0x423f73
mov eax, dword [esp + 8]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
nop
movdqu xmm0, xmmword [eax + ebx*4]
movdqa xmmword [edx + ebx*4], xmm0
add ebx, 4
cmp ebx, ecx
jb 0x423f60
jmp 0x423f95
mov eax, dword [esp + 8]
nop word [eax + eax]
movdqa xmm0, xmmword [eax + ebx*4]
movdqa xmmword [edx + ebx*4], xmm0
add ebx, 4
cmp ebx, ecx
jb 0x423f80
jmp 0x423f95
xor ecx, ecx
cmp ecx, edi
jae 0x42402d
mov ebx, dword [esp + 8]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
nop
mov eax, dword [ebx + ecx*4]
mov dword [edx + ecx*4], eax
inc ecx
cmp ecx, edi
jb 0x423fc0
jmp 0x42402d
mov eax, edi
shr eax, 1
test eax, eax
ja 0x423ff6
jmp 0x4245ae
mov eax, edi
shr eax, 1
test eax, eax
jbe 0x4245e0
mov ecx, dword [ebp + 8]
lea edx, [edi*8]
mov dword [esp], edx
lea edx, [ecx + edi*8]
mov ecx, dword [esp + 8]
xor ebx, ebx
nop dword [eax]
mov esi, dword [ecx + ebx*8]
mov dword [edx + ebx*8], esi
mov esi, dword [ecx + ebx*8 + 4]
mov dword [edx + ebx*8 + 4], esi
inc ebx
cmp ebx, eax
jb 0x424000
mov esi, dword [ebp + 0x14]
lea eax, [ebx + ebx + 1]
lea ecx, [eax - 1]
cmp ecx, edi
jae 0x42402d
mov ecx, dword [esp + 8]
mov ebx, dword [ecx + eax*4 - 4]
mov dword [edx + eax*4 - 4], ebx
cmp edi, 6
jle 0x42414d
mov eax, dword [esp]
add eax, dword [esp + 0x20]
mov dword [esp], eax
cmp eax, dword [esp + 8]
jae 0x42405d
mov eax, dword [esp + 8]
lea edx, [edi*4]
sub eax, dword [esp]
cmp eax, edx
jge 0x424080
jmp 0x42414d
mov eax, dword [esp + 8]
cmp eax, dword [esp]
jae 0x42414d
mov eax, dword [esp]
lea edx, [edi*4]
sub eax, dword [esp + 8]
cmp eax, edx
jl 0x42414d
mov ecx, dword [esp]
and ecx, 0xf
je 0x424099
test cl, 3
jne 0x4245b8
neg ecx
add ecx, 0x10
shr ecx, 2
lea eax, [ecx + 4]
cmp edi, eax
jl 0x4245b8
mov edx, edi
sub edx, ecx
and edx, 3
neg edx
add edx, edi
test ecx, ecx
jbe 0x4240d2
mov dword [esp + 0x44], edi
xor eax, eax
mov esi, dword [esp]
mov edi, dword [esp + 8]
mov ebx, dword [edi + eax*4]
mov dword [esi + eax*4], ebx
inc eax
cmp eax, ecx
jb 0x4240c0
mov edi, dword [esp + 0x44]
mov esi, dword [ebp + 0x14]
mov eax, dword [esp + 8]
lea ebx, [eax + ecx*4]
test bl, 0xf
je 0x424113
mov ebx, eax
mov eax, dword [esp]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
movdqu xmm0, xmmword [ebx + ecx*4]
movdqa xmmword [eax + ecx*4], xmm0
add ecx, 4
cmp ecx, edx
jb 0x424100
jmp 0x424131
mov ebx, eax
mov eax, dword [esp]
nop dword [eax + eax]
movdqa xmm0, xmmword [ebx + ecx*4]
movdqa xmmword [eax + ecx*4], xmm0
add ecx, 4
cmp ecx, edx
jb 0x424120
cmp edx, edi
jae 0x4241b4
mov ecx, dword [esp]
mov ebx, dword [esp + 8]
mov eax, dword [ebx + edx*4]
mov dword [ecx + edx*4], eax
inc edx
cmp edx, edi
jb 0x424140
jmp 0x4241b4
mov eax, edi
shr eax, 1
test eax, eax
jbe 0x4245d6
mov edx, dword [esp + 0x20]
xor ecx, ecx
lea ebx, [edx + edi*8]
mov edx, dword [esp + 8]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov esi, dword [edx + ecx*8]
mov dword [ebx + ecx*8], esi
mov esi, dword [edx + ecx*8 + 4]
mov dword [ebx + ecx*8 + 4], esi
inc ecx
cmp ecx, eax
jb 0x424180
mov esi, dword [ebp + 0x14]
lea eax, [ecx + ecx + 1]
lea edx, [eax - 1]
cmp edx, edi
jae 0x4241b4
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x20]
mov ebx, dword [edx + eax*4 - 4]
lea edx, [ecx + edi*8]
mov dword [edx + eax*4 - 4], ebx
mov ebx, dword [esp + 0x30]
mov edx, 1
mov eax, dword [esp + 4]
lea ecx, [ebx + 0x1f]
shl edx, cl
imul edx, edi
mov dword [esp + 0x14], edx
lea edx, [eax + edx*8]
cmp ebx, dword [ebp + 0x10]
jg 0x424558
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], edx
mov dword [esp + 0x44], edi
lea eax, [eax + edi*4]
mov dword [esp + 0x34], eax
and eax, 0xf
mov ecx, eax
and ecx, 3
mov dword [esp + 4], ecx
mov ecx, eax
neg ecx
add ecx, 0x10
shr ecx, 2
mov dword [esp], ecx
mov ecx, edi
shr ecx, 1
mov dword [esp + 0x3c], ecx
mov dword [esp + 0xc], eax
nop dword [eax + eax]
nop dword [eax]
lea ecx, [ebx - 1]
mov eax, ecx
sar eax, 2
shr eax, 0x1d
lea eax, [eax + ebx - 1]
sar eax, 3
and ecx, 0x80000007
jge 0x424241
sub ecx, 1
or ecx, 0xfffffff8
inc ecx
mov esi, dword [ebp + 0xc]
movzx edx, word [eax + esi]
shr edx, cl
and edx, dword [esp + 0x18]
movzx edx, dl
mov esi, edx
mov ecx, dword [esp + 0x30]
shr esi, cl
dec esi
not esi
and esi, 0xff
mov eax, dword [esp + 0x1c]
mov edi, esi
sub eax, edx
not edi
dec eax
and edx, edi
and eax, esi
and esi, 1
or eax, edx
mov edx, eax
shr eax, 1
and edx, 1
add eax, edx
push eax
push dword [esp + 0x3c]
push dword [esp + 0x28]
call dword [esp + 0x38]
push dword [esp + 0x34]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call dword [esp + 0x3c]
add esp, 0x18
mov edx, esi
dec esi
not edx
and edx, esi
shr edx, 0x1f
neg edx
not edx
mov eax, edx
not eax
cmp dword [esp + 0x44], 0
jle 0x424525
cmp dword [esp + 0x44], 6
jle 0x4244a1
mov ecx, dword [esp + 0x34]
cmp ecx, dword [esp + 0x48]
jae 0x4242ed
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
sub esi, dword [esp + 0x34]
lea edi, [ecx*4]
cmp esi, edi
jge 0x42430c
jmp 0x4244a1
jbe 0x4244a1
mov esi, ecx
mov ecx, dword [esp + 0x44]
sub esi, dword [esp + 0x48]
lea edi, [ecx*4]
cmp esi, edi
jl 0x4244a1
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x424322
cmp dword [esp + 4], 0
jne 0x4245bf
mov ecx, dword [esp]
lea esi, [ecx + 4]
cmp esi, dword [esp + 0x44]
jg 0x4245bf
mov esi, dword [esp + 0x44]
mov edi, esi
sub edi, ecx
and edi, 3
neg edi
add edi, esi
mov dword [esp + 0x10], edi
test ecx, ecx
jbe 0x424382
mov dword [esp + 0x4c], ecx
xor esi, esi
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x34]
nop dword [eax + eax]
nop dword [eax]
mov ebx, dword [esp + 0x48]
mov edi, dword [ecx + esi*4]
and edi, eax
mov ebx, dword [ebx + esi*4]
and ebx, edx
xor ebx, edi
mov dword [ecx + esi*4], ebx
inc esi
cmp esi, dword [esp + 0x4c]
jb 0x424360
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x48]
lea edi, [esi + ecx*4]
test edi, 0xf
je 0x4243e4
mov edi, esi
movd xmm1, edx
movd xmm0, eax
mov dword [esp + 8], ebx
pshufd xmm1, xmm1, 0
pshufd xmm0, xmm0, 0
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x34]
nop dword [eax + eax]
nop dword [eax]
movdqu xmm3, xmmword [edi + ecx*4]
movdqa xmm2, xmmword [esi + ecx*4]
pand xmm3, xmm1
pand xmm2, xmm0
pxor xmm3, xmm2
movdqa xmmword [esi + ecx*4], xmm3
add ecx, 4
cmp ecx, ebx
jb 0x4243c0
jmp 0x424442
mov edi, esi
movd xmm1, edx
movd xmm0, eax
mov dword [esp + 8], ebx
pshufd xmm1, xmm1, 0
pshufd xmm0, xmm0, 0
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x34]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax + eax]
movdqa xmm3, xmmword [edi + ecx*4]
movdqa xmm2, xmmword [esi + ecx*4]
pand xmm3, xmm1
pand xmm2, xmm0
pxor xmm3, xmm2
movdqa xmmword [esi + ecx*4], xmm3
add ecx, 4
cmp ecx, ebx
jb 0x424420
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0x44]
jae 0x424525
mov dword [esp + 8], ebx
mov dword [esp + 0x50], eax
mov ebx, ecx
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x48]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
mov eax, dword [esi + ebx*4]
mov ecx, dword [edi + ebx*4]
and eax, dword [esp + 0x50]
and ecx, edx
xor ecx, eax
mov dword [esi + ebx*4], ecx
inc ebx
cmp ebx, dword [esp + 0x44]
jb 0x424480
mov ebx, dword [esp + 8]
jmp 0x424525
cmp dword [esp + 0x3c], 0
jbe 0x4245cc
mov dword [esp + 0x50], eax
xor ecx, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x34]
nop
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x50]
mov ebx, dword [eax + ecx*8]
mov esi, dword [edi + ecx*8]
and ebx, edx
and esi, dword [esp + 0x40]
xor esi, ebx
mov dword [eax + ecx*8], esi
mov esi, dword [edi + ecx*8 + 4]
mov ebx, dword [eax + ecx*8 + 4]
and esi, dword [esp + 0x40]
and ebx, edx
xor esi, ebx
mov dword [eax + ecx*8 + 4], esi
inc ecx
cmp ecx, dword [esp + 0x3c]
jb 0x4244c0
mov eax, edx
lea esi, [ecx + ecx + 1]
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 8]
lea ecx, [esi - 1]
cmp ecx, dword [esp + 0x44]
jae 0x424525
mov edi, dword [esp + 0x48]
mov ecx, dword [edi + esi*4 - 4]
mov edi, dword [esp + 0x34]
and ecx, edx
mov edx, dword [edi + esi*4 - 4]
and edx, eax
xor ecx, edx
mov dword [edi + esi*4 - 4], ecx
push dword [ebp + 0x14]
push dword [esp + 0x24]
mov eax, dword [ebp + 8]
push eax
push eax
call 0x428360
add esp, 0x10
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add ebx, dword [esp + 0x30]
cmp ebx, dword [ebp + 0x10]
lea ecx, [eax + edx*8]
mov dword [esp + 0x38], ecx
jle 0x424220
mov esi, dword [ebp + 0x14]
mov eax, dword [esi + 4]
mov edx, dword [eax + 4]
mov ebx, dword [edx + 0xc]
mov edx, dword [esp + 0x28]
lea ecx, [ebx*8]
lea edi, [ecx + ebx*4]
neg edi
add dword [esi + 0x34], edi
mov esi, 1
mov eax, dword [edx + 0x34]
test eax, eax
cmovle esi, eax
sub eax, esi
mov dword [edx + 0x34], eax
add esp, 0x54
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test edi, edi
jbe 0x423fda
mov ebx, 1
jmp 0x423e65
mov dword [esp], 0
jmp 0x423dac
mov eax, 1
jmp 0x42401a
xor edx, edx
jmp 0x424131
mov dword [esp + 0x10], 0
jmp 0x42444a
mov esi, 1
jmp 0x424502
mov eax, 1
jmp 0x42419a
test edi, edi
jbe 0x424151
mov ecx, dword [ebp + 8]
lea edx, [edi*8]
mov dword [esp], edx
mov eax, 1
lea edx, [ecx + edi*8]
jmp 0x424021
test edi, edi
jbe 0x423e8b
mov ebx, 1
jmp 0x423e65