Function at 0x436650
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x44
mov edx, dword [ebp + 8]
mov eax, dword [0x4f6e34]
xor eax, esp
mov dword [esp + 0x40], eax
mov esi, dword [ebp + 0xc]
cmp dword [edx + 0x50], 2
je 0x436ac4
mov ebx, 2
mov eax, dword [esi + 0x12e0]
test eax, eax
pxor xmm0, xmm0
cmovne eax, ebx
xor ebx, ebx
mov dword [esp + 0xc], eax
movdqu xmmword [esp + 0x30], xmm0
lea edx, [eax + eax*2]
shl edx, 4
mov dword [esp + 0x28], edx
cmp dword [esi + 0x12b4], 2
je 0x436991
xor edx, edx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], edx
mov esi, dword [eax + ebx*4 + 0x48d6a0]
test esi, esi
jle 0x4367f9
cmp esi, 4
jl 0x43698a
mov eax, dword [ebp + 0xc]
lea eax, [eax + edx*4 + 0x1200]
mov dword [esp + 8], eax
and eax, 0xf
je 0x4366f3
test al, 3
jne 0x43698a
neg eax
add eax, 0x10
shr eax, 2
lea ecx, [eax + 4]
cmp esi, ecx
jl 0x43698a
mov ecx, esi
sub ecx, eax
and ecx, 3
neg ecx
add ecx, esi
test eax, eax
jbe 0x436756
mov edi, dword [esp + ebx*4 + 0x30]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], edi
mov dword [esp], esi
mov dword [esp + 0x24], ebx
mov dword [esp + 4], edx
mov ebx, edi
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov edx, dword [edi + esi*4]
cmp edx, ebx
cmovge ebx, edx
inc esi
cmp esi, eax
jb 0x436732
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov esi, dword [esp]
mov edx, dword [esp + 4]
mov dword [esp + ebx*4 + 0x30], edi
movd xmm0, dword [esp + ebx*4 + 0x30]
pshufd xmm0, xmm0, 0
mov edi, dword [esp + 8]
movdqu xmm1, xmmword [edi + eax*4]
add eax, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp eax, ecx
jb 0x436765
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
add edx, eax
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
sub eax, ecx
pxor xmm2, xmm1
sub edx, eax
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
movd dword [esp + ebx*4 + 0x30], xmm3
cmp ecx, esi
jae 0x4367f9
mov edx, dword [ebp + 0xc]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + ebx*4 + 0x30]
lea edx, [edx + edi*4 + 0x1200]
mov edi, dword [edx + ecx*4]
cmp edi, eax
cmovge eax, edi
inc ecx
cmp ecx, esi
jb 0x4367e1
mov dword [esp + ebx*4 + 0x30], eax
mov eax, dword [esp + 0x18]
lea edx, [eax + ecx]
inc ebx
cmp ebx, 4
jb 0x4366b0
mov esi, dword [ebp + 0xc]
xor edx, edx
mov edi, dword [esp + 0xc]
xor ecx, ecx
shl edi, 4
mov esi, 1
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esp], eax
cmp ebx, dword [edi + 0x48f0c0]
mov dword [esp + 0x10], edx
cmovg ecx, esi
cmp eax, dword [edi + 0x48f0c4]
mov eax, 0
mov edx, dword [esp + 0x38]
cmovg eax, esi
cmp edx, dword [edi + 0x48f0c8]
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
lea ebx, [ecx + eax]
lea ecx, [ecx + eax + 1]
mov eax, dword [esp + 0x3c]
cmovg ebx, ecx
xor edx, edx
cmp eax, dword [edi + 0x48f0cc]
cmovg edx, esi
mov esi, dword [ebp + 0xc]
add ebx, edx
mov edx, dword [esp + 0x10]
jne 0x436963
shl edx, 4
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 4]
mov eax, dword [eax*4 + 0x48f120]
mov dword [esi + 0x1454], eax
lea edx, [edx + ecx + 0x48d6a0]
mov dword [esi + 0x1444], edx
mov ecx, dword [edi*4 + 0x48f120]
mov edx, dword [esp]
mov edi, dword [esp + 8]
mov dword [esi + 0x1448], ecx
mov edx, dword [edx*4 + 0x48f120]
mov edi, dword [edi*4 + 0x48f120]
mov dword [esi + 0x144c], edx
mov dword [esi + 0x1450], edi
cmp dword [esp + 0xc], 0
je 0x4368fb
cmp dword [esp + 0xc], 2
jne 0x4368e9
lea ecx, [ecx + ecx*2]
lea edx, [ecx + edx + 0x1f4]
mov dword [esi + 0x12b0], edx
jmp 0x43690e
push 0x48f400
push dword [ebp + 8]
call fcn.0041fef0
add esp, 8
jmp 0x43690e
lea ecx, [ecx + ecx*4]
add ecx, edx
lea edx, [eax + edi*4]
shl ecx, 4
add ecx, edx
mov dword [esi + 0x12b0], ecx
mov ecx, dword [esi + 0x1444]
mov edx, dword [esi + 0x1448]
mov dword [esi + 0x12ec], 0
imul edx, dword [ecx]
mov dword [esi + 0x12ec], edx
mov edi, dword [esi + 0x144c]
imul edi, dword [ecx + 4]
add edx, edi
mov dword [esi + 0x12ec], edx
mov edi, dword [esi + 0x1450]
imul edi, dword [ecx + 8]
add edx, edi
mov dword [esi + 0x12ec], edx
mov edi, dword [esi + 0x1454]
imul edi, dword [ecx + 0xc]
add edx, edi
mov dword [esi + 0x12ec], edx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x40], 0
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x436985
mov eax, ebx
add esp, 0x44
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.00466f40
xor ecx, ecx
jmp 0x4367cb
xor ecx, ecx
mov esi, dword [esp + 0x28]
mov eax, 0x55555556
mov dword [esp + 4], ecx
mov edi, dword [esi + ebx*4 + 0x48d6b0]
imul edi
sar edi, 0x1f
sub edx, edi
mov dword [esp + 8], edx
test edx, edx
jle 0x436aa6
mov eax, edx
shr eax, 1
mov dword [esp + 0x14], eax
je 0x436abd
mov eax, dword [ebp + 0xc]
lea edi, [ecx + ecx*2]
xor esi, esi
mov edx, dword [esp + ebx*4 + 0x30]
lea eax, [eax + edi*4 + 0x1200]
mov dword [esp + 0x10], eax
mov dword [esp], ecx
mov dword [esp + 0x24], ebx
mov eax, esi
nop dword [eax + eax]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], esi
mov ecx, dword [eax + edi + 0x14]
mov ebx, dword [eax + edi + 0x10]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ebx
mov ecx, dword [eax + edi + 0xc]
mov ebx, dword [eax + edi + 8]
mov esi, dword [eax + edi + 4]
mov edi, dword [eax + edi]
cmp edi, edx
cmovge edx, edi
add eax, 0x18
cmp esi, edx
cmovge edx, esi
cmp ebx, edx
mov esi, dword [esp + 0x20]
cmovge edx, ebx
cmp ecx, edx
cmovge edx, ecx
cmp esi, edx
mov ecx, dword [esp + 0x1c]
cmovge edx, esi
cmp ecx, edx
mov esi, dword [esp + 0x18]
cmovge edx, ecx
inc esi
cmp esi, dword [esp + 0x14]
jb 0x4369f0
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp]
mov dword [esp + ebx*4 + 0x30], edx
lea ecx, [ecx + esi*2]
lea esi, [esi + esi + 1]
lea eax, [esi - 1]
cmp eax, dword [esp + 8]
jae 0x436aa6
mov ecx, dword [esp + 4]
lea edi, [ecx + esi]
mov ecx, dword [ebp + 0xc]
lea edi, [edi + edi*2]
mov eax, dword [ecx + edi*4 + 0x11fc]
mov edx, dword [ecx + edi*4 + 0x11f8]
mov ecx, dword [ecx + edi*4 + 0x11f4]
mov edi, dword [esp + ebx*4 + 0x30]
cmp ecx, edi
cmovge edi, ecx
cmp edx, edi
cmovge edi, edx
cmp eax, edi
cmovge edi, eax
mov eax, dword [esp + 4]
mov dword [esp + ebx*4 + 0x30], edi
lea ecx, [esi + eax]
inc ebx
cmp ebx, 4
jb 0x436993
mov esi, dword [ebp + 0xc]
mov edx, 1
jmp 0x436808
mov esi, 1
jmp 0x436a5d
lea eax, [esi + 0x1200]
mov dword [esp + 8], eax
cmp dword [esi + 0x12b4], 2
je 0x437012
mov dword [esp], 0x48f160
cmp dword [esi + 0x12e0], 0
jne 0x436b5f
mov ecx, eax
mov eax, 0xb
mov edx, dword [ecx + eax*4]
cmp edx, dword [eax*4 + 0x48d7c0]
jl 0x436b5f
inc eax
cmp eax, 0x15
jl 0x436af2
jne 0x436b5f
movdqu xmm1, xmmword [esi + 0x122c]
movdqu xmm3, xmmword [esi + 0x123c]
movdqu xmm0, xmmword [0x48d7ec]
movdqu xmm2, xmmword [0x48d7fc]
mov eax, dword [0x48d80c]
psubd xmm1, xmm0
mov edx, dword [0x48d810]
psubd xmm3, xmm2
mov dword [esi + 0x12e0], 1
movdqu xmmword [esi + 0x122c], xmm1
movdqu xmmword [esi + 0x123c], xmm3
sub dword [esi + 0x124c], eax
sub dword [esi + 0x1250], edx
mov ecx, dword [esi + 0x1304]
test ecx, ecx
jle 0x436c74
cmp ecx, 4
jl 0x437000
mov edi, dword [esp + 8]
and edi, 0xf
je 0x436b93
test edi, 3
jne 0x437000
neg edi
add edi, 0x10
shr edi, 2
lea eax, [edi + 4]
cmp ecx, eax
jl 0x437000
mov eax, ecx
xor ebx, ebx
sub eax, edi
and eax, 3
neg eax
add eax, ecx
test edi, edi
jbe 0x436bcd
mov dword [esp + 4], ecx
xor edx, edx
mov esi, dword [esp + 8]
mov ecx, dword [esi + edx*4]
cmp ecx, ebx
cmovge ebx, ecx
inc edx
cmp edx, edi
jb 0x436bb9
mov ecx, dword [esp + 4]
mov esi, dword [ebp + 0xc]
movd xmm0, ebx
pshufd xmm0, xmm0, 0
mov edx, dword [esp + 8]
movdqu xmm1, xmmword [edx + edi*4]
add edi, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp edi, eax
jb 0x436bda
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
movd edx, xmm3
cmp eax, ecx
jae 0x436c4d
mov edi, dword [esp + 8]
mov ebx, dword [edi + eax*4]
cmp ebx, edx
cmovge edx, ebx
inc eax
cmp eax, ecx
jb 0x436c40
mov ebx, dword [esi + 0x12fc]
cmp eax, ebx
jl 0x436c86
xor edi, edi
test edx, edx
jle 0x436de1
mov eax, 0x186a0
cmp edx, 8
jl 0x436e4e
jmp 0x436ecb
mov ebx, dword [esi + 0x12fc]
test ebx, ebx
jle 0x436ddd
xor edx, edx
xor eax, eax
lea ecx, [eax + 1]
sub ebx, ecx
inc ebx
cmp ebx, 4
jl 0x437009
lea edi, [esi + eax*4 + 0x1200]
mov dword [esp + 0x10], edi
and edi, 0xf
je 0x436cb9
test edi, 3
jne 0x437009
neg edi
add edi, 0x10
shr edi, 2
lea ecx, [edi + 4]
cmp ebx, ecx
jl 0x437009
mov ecx, ebx
sub ecx, edi
and ecx, 3
neg ecx
add ecx, ebx
mov dword [esp + 0x18], 0
test edi, edi
jbe 0x436d1b
mov dword [esp + 0x14], 0
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov eax, dword [esi + ecx*4]
cmp eax, ebx
cmovge ebx, eax
inc ecx
cmp ecx, edi
jb 0x436cfb
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov esi, dword [ebp + 0xc]
movd xmm0, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
pshufd xmm0, xmm0, 0
movdqu xmm1, xmmword [esi + edi*4]
add edi, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp edi, ecx
jb 0x436d2a
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
mov esi, dword [ebp + 0xc]
movd edi, xmm3
cmp ecx, ebx
jae 0x436da6
lea eax, [esi + eax*4 + 0x1200]
mov esi, dword [eax + ecx*4]
cmp esi, edi
cmovge edi, esi
inc ecx
cmp ecx, ebx
jb 0x436d96
mov esi, dword [ebp + 0xc]
mov eax, 0x186a0
test edx, edx
jg 0x436e41
test edi, edi
jle 0x436de1
cmp edi, 2
jl 0x436dff
cmp edi, 4
jl 0x436e15
cmp edi, 8
jl 0x436e2b
cmp edx, 8
jge 0x436ecb
cmp edx, 2
jl 0x436e8b
jmp 0x436eab
xor edx, edx
xor edi, edi
mov ecx, dword [esp]
mov eax, 0x186a0
mov ecx, dword [ecx]
cmp ecx, 0x186a0
jge 0x436dff
mov dword [esi + 0x12b0], 0
mov eax, ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 4]
cmp eax, ecx
jle 0x436e15
mov dword [esi + 0x12b0], 1
mov eax, ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 8]
cmp eax, ecx
jle 0x436e2b
mov dword [esi + 0x12b0], 2
mov eax, ecx
mov ecx, dword [esp]
mov ecx, dword [ecx + 0xc]
cmp eax, ecx
jle 0x436e41
mov dword [esi + 0x12b0], 3
mov eax, ecx
cmp edx, 8
jge 0x436ecb
test edi, edi
jg 0x436e6b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x10]
cmp eax, ecx
jle 0x436e64
mov dword [esi + 0x12b0], 4
mov eax, ecx
cmp edx, 2
jl 0x436e75
jmp 0x436eab
cmp edx, 2
jge 0x436ecb
cmp edi, 2
jge 0x436e8b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x14]
cmp eax, ecx
jle 0x436e8b
mov dword [esi + 0x12b0], 5
mov eax, ecx
cmp edx, 2
jge 0x436ecb
cmp edi, 4
jge 0x436eab
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x18]
cmp eax, ecx
jle 0x436eab
mov dword [esi + 0x12b0], 6
mov eax, ecx
cmp edx, 2
jge 0x436ecb
cmp edi, 8
jge 0x436ecb
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x1c]
cmp eax, ecx
jle 0x436ecb
mov dword [esi + 0x12b0], 7
mov eax, ecx
cmp edx, 4
jge 0x436eeb
cmp edi, 2
jge 0x436eeb
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x20]
cmp eax, ecx
jle 0x436eeb
mov dword [esi + 0x12b0], 8
mov eax, ecx
cmp edx, 4
jge 0x436f0b
cmp edi, 4
jge 0x436f0b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x24]
cmp eax, ecx
jle 0x436f0b
mov dword [esi + 0x12b0], 9
mov eax, ecx
cmp edx, 4
jge 0x436f2b
cmp edi, 8
jge 0x436f2b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x28]
cmp eax, ecx
jle 0x436f2b
mov dword [esi + 0x12b0], 0xa
mov eax, ecx
cmp edx, 8
jge 0x436f4b
cmp edi, 2
jge 0x436f4b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x2c]
cmp eax, ecx
jle 0x436f4b
mov dword [esi + 0x12b0], 0xb
mov eax, ecx
cmp edx, 8
jge 0x436f6b
cmp edi, 4
jge 0x436f6b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x30]
cmp eax, ecx
jle 0x436f6b
mov dword [esi + 0x12b0], 0xc
mov eax, ecx
cmp edx, 8
jge 0x436f8b
cmp edi, 8
jge 0x436f8b
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x34]
cmp eax, ecx
jle 0x436f8b
mov dword [esi + 0x12b0], 0xd
mov eax, ecx
cmp edx, 0x10
jge 0x436fab
cmp edi, 4
jge 0x436fab
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x38]
cmp eax, ecx
jle 0x436fab
mov dword [esi + 0x12b0], 0xe
mov eax, ecx
cmp edx, 0x10
jge 0x436fcb
cmp edi, 8
jge 0x436fcb
mov edx, dword [esp]
mov edx, dword [edx + 0x3c]
cmp eax, edx
jle 0x436fcb
mov dword [esi + 0x12b0], 0xf
mov eax, edx
mov dword [esi + 0x12ec], eax
xor ebx, ebx
cmp eax, 0x186a0
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x40], ebx
mov eax, 1
cmovne eax, ebx
xor ecx, esp
cmp ecx, dword [0x4f6e34]
jne 0x436985
add esp, 0x44
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor edx, edx
xor eax, eax
jmp 0x436c38
xor edi, edi
xor ecx, ecx
jmp 0x436d8b
cmp dword [esi + 0x12b8], 0
mov eax, 0x48f1a0
mov edx, 0x48f1e0
cmovne edx, eax
mov dword [esp], edx
jmp 0x436b5f