Function at 0x45b700
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x54
mov eax, dword [0x52cfb4]
xor eax, esp
mov dword [esp + 0x50], eax
imul edx, dword [ebp + 0x10], 0x1484
imul eax, dword [ebp + 0xc], 0x2908
add eax, edx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], edx
lea ebx, [ecx + eax]
xor ecx, ecx
mov eax, dword [ebx + 0x12fc]
test eax, eax
jle 0x45b7e4
xor edi, edi
xor esi, esi
mov edx, edi
add edi, dword [ebx + esi*4 + 0x1308]
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jge 0x45b7c3
cmp dword [ebx + edx*4 + 0x900], 0
jne 0x45b7db
inc edx
cmp edx, edi
jl 0x45b7b4
jne 0x45b7db
mov dword [ebx + esi*4 + 0x1200], 0xfffffffe
mov ecx, 0xfffffffe
mov eax, dword [ebx + 0x12fc]
inc esi
cmp esi, eax
jl 0x45b749
mov edx, dword [ebx + 0x12e0]
cmp dword [ebx + 0x12e4], 0
jne 0x45b93e
test edx, edx
jne 0x45b958
test eax, eax
jle 0x45b942
cmp eax, 4
jl 0x45bced
mov edi, ebx
and edi, 0xf
mov esi, edi
neg esi
add esi, 0x10
shr esi, 2
test edi, edi
cmovne edi, esi
lea esi, [edi + 4]
cmp eax, esi
jl 0x45bced
mov esi, eax
sub esi, edi
and esi, 3
neg esi
add esi, eax
mov dword [esp + 0x10], esi
xor esi, esi
test edi, edi
jbe 0x45b87b
mov dword [esp], 0
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov ecx, dword [esp]
mov edx, esi
mov eax, dword [ebx + ecx*4 + 0x1200]
or edx, eax
test eax, eax
cmovg esi, edx
inc ecx
cmp ecx, edi
jb 0x45b85a
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
movd xmm1, esi
mov esi, dword [esp + 0x10]
pxor xmm0, xmm0
movdqu xmm3, xmmword [ebx + edi*4 + 0x1200]
add edi, 4
movdqa xmm2, xmm3
pcmpgtd xmm2, xmm0
pand xmm3, xmm2
por xmm1, xmm3
cmp edi, esi
jb 0x45b887
movdqa xmm0, xmm1
psrldq xmm0, 8
por xmm1, xmm0
movdqa xmm2, xmm1
psrldq xmm2, 4
por xmm1, xmm2
mov dword [esp + 0x10], esi
movd esi, xmm1
cmp eax, dword [esp + 0x10]
jbe 0x45b8f8
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov edi, dword [esp + 0x10]
mov ecx, esi
mov edx, dword [ebx + edi*4 + 0x1200]
or ecx, edx
test edx, edx
cmovg esi, ecx
inc edi
cmp edi, eax
jb 0x45b8db
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
test esi, 1
jne 0x45b942
test esi, esi
je 0x45b942
test eax, eax
jle 0x45b92f
xor edx, edx
mov ecx, dword [ebx + edx*4 + 0x1200]
test ecx, ecx
jle 0x45b924
sar ecx, 1
mov dword [ebx + edx*4 + 0x1200], ecx
mov eax, dword [ebx + 0x12fc]
inc edx
cmp edx, eax
jl 0x45b90a
mov edx, dword [ebx + 0x12e0]
mov dword [ebx + 0x12e4], 1
mov ecx, 1
test edx, edx
jne 0x45b958
cmp dword [ebx + 0x12b4], 2
je 0x45b958
mov eax, dword [ebp + 8]
cmp dword [eax + 0x50], 2
je 0x45cc02
mov eax, dword [ebp + 0x10]
xor edx, edx
shl eax, 4
add eax, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
mov dword [eax + 0x5220], edx
mov dword [eax + 0x5224], edx
mov dword [eax + 0x5228], edx
mov dword [eax + 0x522c], edx
cmp dword [esi + 0x50], 2
je 0x45c39f
mov eax, dword [ebx + 0x12fc]
test eax, eax
jle 0x45b9b4
xor edx, edx
cmp dword [ebx + edx*4 + 0x1200], 0xfffffffe
jne 0x45b9af
mov dword [ebx + edx*4 + 0x1200], 0
mov eax, dword [ebx + 0x12fc]
inc edx
cmp edx, eax
jl 0x45b994
test ecx, ecx
je 0x45bccd
mov edx, dword [ebp + 8]
cmp dword [edx + 0x50], 2
je 0x45be2d
mov esi, dword [ebx + 0x12e0]
mov eax, 2
test esi, esi
cmovne esi, eax
pxor xmm0, xmm0
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xc], esi
movdqu xmmword [esp + 0x40], xmm0
lea edi, [esi + esi*2]
shl edi, 4
lea edx, [edx + ecx + 0x1200]
mov dword [esp + 0x30], edi
xor ecx, ecx
cmp dword [ebx + 0x12b4], 2
je 0x45bd04
mov dword [esp + 0x2c], edx
xor eax, eax
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov esi, dword [edx + ecx*4 + 0x4c1080]
test esi, esi
jle 0x45bb5b
cmp esi, 4
jl 0x45bcfd
mov edx, dword [esp + 0x2c]
lea edx, [edx + eax*4]
mov dword [esp + 0x10], edx
and edx, 0xf
je 0x45ba59
test dl, 3
jne 0x45bcfd
neg edx
add edx, 0x10
shr edx, 2
lea ebx, [edx + 4]
cmp esi, ebx
jl 0x45bcfd
mov ebx, esi
sub ebx, edx
and ebx, 3
neg ebx
add ebx, esi
test edx, edx
jbe 0x45babc
mov edi, dword [esp + ecx*4 + 0x40]
mov dword [esp], 0
mov dword [esp + 0x14], edi
mov dword [esp + 4], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 8], eax
mov ecx, edi
mov esi, dword [esp]
mov edi, dword [esp + 0x10]
mov eax, dword [edi + esi*4]
cmp eax, ecx
cmovge ecx, eax
inc esi
cmp esi, edx
jb 0x45ba97
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov eax, dword [esp + 8]
mov dword [esp + ecx*4 + 0x40], edi
movd xmm0, dword [esp + ecx*4 + 0x40]
pshufd xmm0, xmm0, 0
mov edi, dword [esp + 0x10]
movdqu xmm1, xmmword [edi + edx*4]
add edx, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp edx, ebx
jb 0x45bacb
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
add eax, edx
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
sub edx, ebx
pxor xmm2, xmm1
sub eax, edx
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
movd dword [esp + ecx*4 + 0x40], xmm3
cmp ebx, esi
jae 0x45bb5b
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + ecx*4 + 0x40]
lea edx, [edx + edi*4]
mov edi, dword [edx + ebx*4]
cmp edi, eax
cmovge eax, edi
inc ebx
cmp ebx, esi
jb 0x45bb44
mov dword [esp + ecx*4 + 0x40], eax
mov eax, dword [esp + 0x18]
invalid