Function at 0x436afc
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x94
mov esi, edx
mov ebx, dword [0x5ed2a0]
lea edx, [esp + 0x90]
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x60]
mov dword [esp + 8], ebx
mov dword [esp + 0x60], 0
mov dword [esp + 0x90], 0x5f12d4
push 0x20
push edx
push 0x5be880
push 0x8384ff01
mov ebx, dword [eax]
push ebx
push ecx
mov edi, dword [0x5ed264]
call fcn.0053cdd0
add esp, 0x18
test eax, eax
jne 0x436bf4
mov dword [esp + 0x88], 0x5f12e4
lea eax, [esp + 0x88]
push eax
push 0x5be888
lea edx, [esp + 0x68]
push edx
call fcn.0053e670
add esp, 0xc
test eax, eax
jne 0x436bf4
mov dword [esp + 0x80], 0x5f12e8
lea eax, [esp + 0x80]
push eax
push 0x5be890
lea edx, [esp + 0x68]
push edx
call fcn.0053e670
add esp, 0xc
test eax, eax
jne 0x436bf4
mov dword [esp + 0x58], 0x5ed150
lea eax, [esp + 0x58]
push eax
push 0x5be898
lea edx, [esp + 0x68]
push edx
call fcn.0053e670
add esp, 0xc
test eax, eax
jne 0x436bf4
mov dword [esp + 0x50], 0x5ed154
lea eax, [esp + 0x50]
push eax
push 0x5be8a0
lea edx, [esp + 0x68]
push edx
call fcn.0053e670
add esp, 0xc
test eax, eax
jle 0x436c0d
mov dword [esi], 0xffffffeb
add esp, 0x94
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x18
mov edx, dword [0x5ed264]
mov eax, dword [0x5f12d4]
cmp eax, edx
jg 0x436c4d
test eax, eax
jl 0x436c4d
mov ecx, dword [0x5f12e4]
mov dword [esp], ecx
cmp ecx, dword [0x5ed2a0]
jg 0x436c4d
cmp dword [esp], 0
jl 0x436c4d
mov ecx, dword [0x5ed150]
cmp ecx, dword [0x5ed29c]
jg 0x436c4d
cmp edx, dword [0x5ed154]
jge 0x436c62
mov dword [esi], 0xffffffea
add esp, 0x94
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x18
test eax, eax
jle 0x436cb0
xor eax, eax
test edi, edi
mov edx, edi
cmovle edx, eax
mov ecx, dword [ebp + 0x18]
shl edx, 2
mov dword [esp + 0x60], eax
lea eax, [esp + 0x48]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ecx
push 0x20
push eax
push 0x5be8a8
push 0x8384ff01
push ebx
lea edx, [esp + 0x74]
push edx
call fcn.0053cdd0
add esp, 0x18
test eax, eax
jg 0x436bf8
mov eax, dword [0x5f12e4]
mov dword [esp], eax
cmp dword [esp], 0
jle 0x436cfa
mov edx, dword [esp + 8]
xor eax, eax
test edx, edx
mov dword [esp + 0x60], eax
cmovg eax, edx
mov ecx, dword [ebp + 0x1c]
shl eax, 2
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
mov dword [esp + 0x3c], ecx
push 0x20
push eax
push 0x5be8b0
push 0x8384ff01
push ebx
lea edx, [esp + 0x74]
push edx
call fcn.0053cdd0
add esp, 0x18
test eax, eax
jg 0x436bf8
xor eax, eax
test edi, edi
cmovle edi, eax
test edi, edi
jle 0x436eda
mov edx, dword [ebp + 0x18]
and edx, 0xf
je 0x436d22
test dl, 3
jne 0x437a10
neg edx
add edx, 0x10
shr edx, 2
lea eax, [edx + 4]
cmp edi, eax
jl 0x437a10
mov eax, edi
mov ecx, 0x80000000
sub eax, edx
and eax, 3
neg eax
add eax, edi
mov dword [esp + 4], eax
test edx, edx
jbe 0x436d5f
mov dword [esp + 0x1c], esi
xor eax, eax
mov esi, dword [ebp + 0x18]
cmp ecx, dword [esi + eax*4]
jg 0x436d56
mov ecx, dword [esi + eax*4]
inc eax
cmp eax, edx
jb 0x436d4e
mov esi, dword [esp + 0x1c]
movd xmm0, ecx
pshufd xmm0, xmm0, 0
mov eax, dword [esp + 4]
mov ecx, dword [ebp + 0x18]
movdqa xmm1, xmmword [ecx + edx*4]
add edx, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
cmp edx, eax
pand xmm2, xmm1
pxor xmm0, xmm2
jb 0x436d6f
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 dword [esp + 4], eax
movd dword [esp], xmm3
cmp edi, dword [esp + 4]
jbe 0x436df2
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov ecx, dword [ebp + 0x18]
cmp eax, dword [ecx + edx*4]
jg 0x436dea
mov eax, dword [ecx + edx*4]
inc edx
cmp edx, edi
jb 0x436de2
mov dword [esp], eax
mov edx, dword [ebp + 0x18]
and edx, 0xf
je 0x436e0b
test dl, 3
jne 0x4379fe
neg edx
add edx, 0x10
shr edx, 2
lea eax, [edx + 4]
cmp edi, eax
jl 0x4379fe
mov eax, edi
mov ecx, 0x7fffffff
sub eax, edx
and eax, 3
neg eax
add eax, edi
mov dword [esp + 4], eax
test edx, edx
jbe 0x436e48
mov dword [esp + 0x1c], esi
xor eax, eax
mov esi, dword [ebp + 0x18]
cmp ecx, dword [esi + eax*4]
jle 0x436e3f
mov ecx, dword [esi + eax*4]
inc eax
cmp eax, edx
jb 0x436e37
mov esi, dword [esp + 0x1c]
movd xmm0, ecx
pshufd xmm0, xmm0, 0
mov eax, dword [esp + 4]
mov ecx, dword [ebp + 0x18]
movdqa xmm1, xmmword [ecx + edx*4]
add edx, 4
movdqa xmm2, xmm1
cmp edx, eax
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqa xmm0, xmm1
pxor xmm0, xmm2
jb 0x436e58
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
mov dword [esp + 4], eax
movd eax, xmm3
cmp edi, dword [esp + 4]
jbe 0x436ee6
mov edx, dword [esp + 4]
mov ecx, dword [ebp + 0x18]
cmp eax, dword [ecx + edx*4]
jle 0x436ed3
mov eax, dword [ecx + edx*4]
inc edx
cmp edx, edi
jb 0x436ecb
jmp 0x436ee6
mov dword [esp], 0x80000000
mov eax, 0x7fffffff
mov edx, dword [0x5f12d4]
test edx, edx
jle 0x436f03
cmp edx, dword [esp]
jl 0x436c4d
neg edx
cmp eax, edx
jl 0x436c4d
mov edx, dword [esp + 8]
xor eax, eax
test edx, edx
cmovle edx, eax
mov dword [esp + 8], edx
test edx, edx
jle 0x4370fa
mov edi, dword [ebp + 0x1c]
and edi, 0xf
je 0x436f36
test edi, 3
jne 0x437a24
neg edi
add edi, 0x10
shr edi, 2
lea eax, [edi + 4]
cmp eax, dword [esp + 8]
jg 0x437a24
mov eax, edx
sub eax, edi
mov ecx, 0x80000000
and eax, 3
neg eax
add eax, edx
test edi, edi
jbe 0x436f71
mov dword [esp + 0x1c], esi
xor edx, edx
mov esi, dword [ebp + 0x1c]
cmp ecx, dword [esi + edx*4]
jg 0x436f68
mov ecx, dword [esi + edx*4]
inc edx
cmp edx, edi
jb 0x436f60
mov esi, dword [esp + 0x1c]
movd xmm0, ecx
pshufd xmm0, xmm0, 0
mov edx, dword [ebp + 0x1c]
movdqa xmm1, xmmword [edx + edi*4]
add edi, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
cmp edi, eax
pand xmm2, xmm1
pxor xmm0, xmm2
jb 0x436f7d
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 ecx, xmm3
cmp eax, dword [esp + 8]
jae 0x436ff5
mov edx, dword [esp + 8]
mov edi, dword [ebp + 0x1c]
cmp ecx, dword [edi + eax*4]
jg 0x436ff0
mov ecx, dword [edi + eax*4]
inc eax
cmp eax, edx
jb 0x436fe8
mov eax, dword [ebp + 0x1c]
and eax, 0xf
mov dword [esp], eax
je 0x437015
test byte [esp], 3
jne 0x437a30
neg eax
add eax, 0x10
shr eax, 2
mov dword [esp], eax
lea edx, [eax + 4]
cmp edx, dword [esp + 8]
jg 0x437a30
mov eax, dword [esp + 8]
mov edx, eax
mov edi, dword [esp]
sub edx, edi
and edx, 3
neg edx
add edx, eax
mov eax, 0x7fffffff
test edi, edi
jbe 0x437065
mov dword [esp + 0xc], ebx
xor edi, edi
mov dword [esp + 0x1c], esi
mov ebx, dword [esp]
mov esi, dword [ebp + 0x1c]
cmp eax, dword [esi + edi*4]
jle 0x437055
mov eax, dword [esi + edi*4]
inc edi
cmp edi, ebx
jb 0x43704d
mov dword [esp], ebx
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
movd xmm0, eax
pshufd xmm0, xmm0, 0
mov eax, dword [esp]
mov edi, dword [ebp + 0x1c]
movdqa xmm1, xmmword [edi + eax*4]
add eax, 4
movdqa xmm2, xmm1
cmp eax, edx
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqa xmm0, xmm1
pxor xmm0, xmm2
jb 0x437074
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
movd eax, xmm3
cmp edx, dword [esp + 8]
jae 0x437104
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 8]
mov edi, dword [ebp + 0x1c]
cmp eax, dword [edi + edx*4]
jle 0x4370ef
mov eax, dword [edi + edx*4]
inc edx
cmp edx, esi
jb 0x4370e7
mov esi, dword [esp + 0x1c]
jmp 0x437104
mov ecx, 0x80000000
mov eax, 0x7fffffff
cmp dword [0x5f12e4], 0
jle 0x43711f
cmp ecx, 1
jg 0x436c4d
cmp eax, 0xffffffff
jl 0x436c4d
mov edi, dword [0x5ed150]
test edi, edi
jle 0x4378d7
mov ecx, 0
mov eax, dword [esp + 0x10]
cmovle edi, ecx
mov edx, 1
mov dword [esp + 0x60], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edi
lea edi, [esp + 0x20]
mov dword [esp + 0x30], 4
push 0x20
push edi
push 0x5be8b8
push 0x8384ff01
push ebx
lea eax, [esp + 0x74]
push eax
call fcn.0053cdd0
add esp, 0x18
test eax, eax
jg 0x436bf8
mov edx, dword [0x5ed150]
xor eax, eax
test edx, edx
cmovle edx, eax
mov dword [esp], edx
test edx, edx
jle 0x437415
mov edi, dword [esp + 0x10]
and edi, 0xf
je 0x4371b6
test edi, 3
jne 0x437850
neg edi
add edi, 0x10
shr edi, 2
lea eax, [edi + 0x10]
cmp eax, dword [esp]
jg 0x437850
mov eax, edx
mov ecx, eax
sub ecx, edi
mov edx, 0x80000000
and ecx, 0xf
neg ecx
add ecx, eax
test edi, edi
jbe 0x4371f3
mov dword [esp + 0x1c], esi
xor eax, eax
mov esi, dword [esp + 0x10]
cmp edx, dword [esi + eax*4]
jg 0x4371ea
mov edx, dword [esi + eax*4]
inc eax
cmp eax, edi
jb 0x4371e2
mov esi, dword [esp + 0x1c]
movd xmm0, edx
pshufd xmm0, xmm0, 0
mov eax, dword [esp + 0x10]
movdqa xmm1, xmmword [eax + edi*4]
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmmword [eax + edi*4 + 0x10]
movdqa xmm4, xmm0
pxor xmm0, xmm2
pcmpgtd xmm4, xmm2
movdqa xmm3, xmmword [eax + edi*4 + 0x20]
pand xmm4, xmm0
pxor xmm4, xmm2
movdqa xmm6, xmm3
pcmpgtd xmm6, xmm4
pxor xmm3, xmm4
movdqa xmm5, xmmword [eax + edi*4 + 0x30]
pand xmm6, xmm3
pxor xmm6, xmm4
movdqa xmm0, xmm5
pcmpgtd xmm0, xmm6
pxor xmm5, xmm6
add edi, 0x10
pand xmm0, xmm5
pxor xmm0, xmm6
cmp edi, ecx
jb 0x437200
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 dword [esp + 4], xmm3
cmp ecx, dword [esp]
jae 0x4372cf
mov eax, dword [esp + 4]
mov edx, dword [esp]
mov edi, dword [esp + 0x10]
cmp eax, dword [edi + ecx*4]
jg 0x4372c6
mov eax, dword [edi + ecx*4]
inc ecx
cmp ecx, edx
jb 0x4372be
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
and eax, 0xf
mov dword [esp + 8], eax
je 0x4372f3
test byte [esp + 8], 3
jne 0x437844
neg eax
add eax, 0x10
shr eax, 2
mov dword [esp + 8], eax
lea edx, [eax + 0x10]
cmp edx, dword [esp]
jg 0x437844
mov eax, dword [esp]
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
and ecx, 0xf
neg ecx
add ecx, eax
mov eax, 0x7fffffff
test edx, edx
jbe 0x43733d
mov dword [esp + 0x1c], esi
xor edx, edx
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x10]
cmp eax, dword [edi + edx*4]
jle 0x437330
mov eax, dword [edi + edx*4]
inc edx
cmp edx, esi
jb 0x437328
mov dword [esp + 8], esi
mov esi, dword [esp + 0x1c]
movd xmm0, eax
pshufd xmm0, xmm0, 0
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x10]
movdqa xmm1, xmmword [edx + eax*4]
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqa xmm0, xmmword [edx + eax*4 + 0x10]
pxor xmm2, xmm1
movdqa xmm3, xmm0
pcmpgtd xmm3, xmm2
pxor xmm2, xmm0
movdqa xmm4, xmmword [edx + eax*4 + 0x20]
pand xmm3, xmm2
pxor xmm3, xmm0
movdqa xmm5, xmm4
pcmpgtd xmm5, xmm3
pxor xmm3, xmm4
movdqa xmm6, xmmword [edx + eax*4 + 0x30]
pand xmm5, xmm3
pxor xmm5, xmm4
movdqa xmm0, xmm6
pcmpgtd xmm0, xmm5
pxor xmm5, xmm6
add eax, 0x10
pand xmm0, xmm5
pxor xmm0, xmm6
cmp eax, ecx
jb 0x43734e
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
movd eax, xmm3
cmp ecx, dword [esp]
jae 0x437422
mov edx, dword [esp]
mov edi, dword [esp + 0x10]
cmp eax, dword [edi + ecx*4]
jle 0x43740e
mov eax, dword [edi + ecx*4]
inc ecx
cmp ecx, edx
jb 0x437406
jmp 0x437422
mov dword [esp + 4], 0x80000000
mov eax, 0x7fffffff
mov edx, dword [esp + 4]
cmp edx, dword [0x5ed29c]
jg 0x436c4d
test eax, eax
jl 0x436c4d
mov edi, dword [0x5ed154]
test edi, edi
jle 0x43785f
mov ecx, 0
mov eax, dword [ebp + 0x14]
cmovle edi, ecx
mov edx, 1
mov dword [esp + 0x60], ecx
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], edi
lea edi, [esp + 8]
mov dword [esp + 0x18], 4
push 0x20
push edi
push 0x5be8c0
push 0x8384ff01
push ebx
lea ebx, [esp + 0x74]
push ebx
call fcn.0053cdd0
add esp, 0x18
test eax, eax
jg 0x436bf8
mov ecx, dword [0x5ed154]
xor eax, eax
test ecx, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x437704
mov edi, dword [ebp + 0x14]
and edi, 0xf
je 0x4374cc
test edi, 3
jne 0x4377ea
neg edi
add edi, 0x10
shr edi, 2
lea eax, [edi + 0x10]
cmp ecx, eax
jl 0x4377ea
mov eax, ecx
mov ebx, 0x80000000
sub eax, edi
and eax, 0xf
neg eax
add eax, ecx
test edi, edi
jbe 0x437505
mov dword [esp + 0x1c], esi
xor edx, edx
mov esi, dword [ebp + 0x14]
cmp ebx, dword [esi + edx*4]
jg 0x4374fc
mov ebx, dword [esi + edx*4]
inc edx
cmp edx, edi
jb 0x4374f4
mov esi, dword [esp + 0x1c]
movd xmm0, ebx
pshufd xmm0, xmm0, 0
mov edx, dword [ebp + 0x14]
movdqa xmm1, xmmword [edx + edi*4]
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmmword [edx + edi*4 + 0x10]
movdqa xmm4, xmm0
pxor xmm0, xmm2
pcmpgtd xmm4, xmm2
movdqa xmm3, xmmword [edx + edi*4 + 0x20]
pand xmm4, xmm0
pxor xmm4, xmm2
movdqa xmm6, xmm3
pcmpgtd xmm6, xmm4
pxor xmm3, xmm4
movdqa xmm5, xmmword [edx + edi*4 + 0x30]
pand xmm6, xmm3
pxor xmm6, xmm4
movdqa xmm0, xmm5
pcmpgtd xmm0, xmm6
pxor xmm5, xmm6
add edi, 0x10
pand xmm0, xmm5
pxor xmm0, xmm6
cmp edi, eax
jb 0x437511
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 0x4375d1
mov ebx, dword [ebp + 0x14]
cmp edx, dword [ebx + eax*4]
jg 0x4375cc
mov edx, dword [ebx + eax*4]
inc eax
cmp eax, ecx
jb 0x4375c4
mov edi, dword [ebp + 0x14]
and edi, 0xf
je 0x4375ed
test edi, 3
jne 0x4377f6
neg edi
add edi, 0x10
shr edi, 2
lea eax, [edi + 0x10]
cmp ecx, eax
jl 0x4377f6
mov eax, ecx
mov ebx, 0x7fffffff
sub eax, edi
and eax, 0xf
neg eax
add eax, ecx
test edi, edi
jbe 0x437636
mov dword [esp + 4], 0
mov dword [esp], ecx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 4]
mov esi, dword [ebp + 0x14]
cmp ebx, dword [esi + ecx*4]
jle 0x43762a
mov ebx, dword [esi + ecx*4]
inc ecx
cmp ecx, edi
jb 0x437622
mov ecx, dword [esp]
mov esi, dword [esp + 0x1c]
movd xmm0, ebx
pshufd xmm0, xmm0, 0
mov ebx, dword [ebp + 0x14]
movdqa xmm1, xmmword [ebx + edi*4]
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm0
pxor xmm0, xmm1
pand xmm2, xmm0
movdqa xmm0, xmmword [ebx + edi*4 + 0x10]
pxor xmm2, xmm1
movdqa xmm3, xmm0
pcmpgtd xmm3, xmm2
pxor xmm2, xmm0
movdqa xmm4, xmmword [ebx + edi*4 + 0x20]
pand xmm3, xmm2
pxor xmm3, xmm0
movdqa xmm5, xmm4
pcmpgtd xmm5, xmm3
pxor xmm3, xmm4
movdqa xmm6, xmmword [ebx + edi*4 + 0x30]
pand xmm5, xmm3
pxor xmm5, xmm4
movdqa xmm0, xmm6
pcmpgtd xmm0, xmm5
pxor xmm5, xmm6
add edi, 0x10
pand xmm0, xmm5
pxor xmm0, xmm6
cmp edi, eax
jb 0x437642
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm1, xmm0
pand xmm2, xmm1
pxor xmm2, xmm0
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm0, xmm2
pand xmm3, xmm0
pxor xmm3, xmm2
movd ebx, xmm3
cmp eax, ecx
jae 0x43770e
mov edi, dword [ebp + 0x14]
cmp ebx, dword [edi + eax*4]
jle 0x4376fd
mov ebx, dword [edi + eax*4]
inc eax
cmp eax, ecx
jb 0x4376f5
jmp 0x43770e
mov edx, 0x80000000
mov ebx, 0x7fffffff
cmp edx, dword [0x5ed264]
jg 0x436c4d
test ebx, ebx
jl 0x436c4d
mov ebx, dword [0x5f12e4]
test ebx, ebx
mov dword [0x5e10e8], 0
jle 0x4377a9
xor edx, edx
mov ecx, dword [0x5ed2a0]
xor eax, eax
test ecx, ecx
jle 0x437795
mov dword [esp + 4], 1
lea edi, [ecx*4]
mov dword [esp + 0x40], edi
lea edi, [ecx*8]
mov dword [esp + 0x44], ecx
mov dword [esp], ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x1c], esi
mov ebx, dword [esp + 4]
mov ecx, dword [ebp + 0x1c]
cmp dword [ecx + ebx*4 - 4], 0
jle 0x437802
add eax, dword [ebx*4 + 0x5ed5fc]
inc edx
inc ebx
cmp ebx, dword [esp + 0x44]
jle 0x437774
mov ebx, dword [esp]
mov esi, dword [esp + 0x1c]
cmp ebx, edx
jne 0x436c4d
cmp eax, dword [0x5f12e8]
jne 0x436c4d
mov edx, dword [0x5f12d4]
test edx, edx
jle 0x436bfe
mov eax, dword [0x5ed264]
xor ebx, ebx
test eax, eax
jle 0x4377dd
mov edi, dword [ebp + 0x18]
mov ecx, 1
cmp dword [edi + ecx*4 - 4], 0
je 0x4377d8
inc ebx
mov dword [0x5e10e8], ebx
inc ecx
cmp ecx, eax
jle 0x4377ca
cmp edx, ebx
jne 0x436c4d
jmp 0x436bfe
mov edx, 0x80000000
xor eax, eax
jmp 0x4375bd
mov ebx, 0x7fffffff
xor eax, eax
jmp 0x4376ee
jl 0x437828
mov edi, dword [esp + 0x40]
xor esi, esi
mov dword [ebx*4 + 0x5ed5fc], esi
mov dword [edi + ebx*4 + 0x5ed5fc], esi
mov edi, dword [esp + 0x34]
mov dword [edi + ebx*4 + 0x5ed5fc], esi
jmp 0x437787
mov esi, dword [esp + 0x34]
inc edx
add eax, dword [ebx*4 + 0x5ed5fc]
mov dword [esi + ebx*4 + 0x5ed5fc], 0
jmp 0x437787
mov eax, 0x7fffffff
xor ecx, ecx
jmp 0x4373fa
mov dword [esp + 4], 0x80000000
xor ecx, ecx
jmp 0x4372ae
jge 0x437722
mov eax, dword [0x5f12d4]
test eax, eax
jle 0x4378b3
mov dword [0x5ed154], eax
mov eax, dword [0x5ed264]
test eax, eax
mov dword [0x5e10e8], 0
jle 0x437722
mov ebx, dword [ebp + 0x14]
xor ecx, ecx
mov edi, dword [ebp + 0x18]
mov edx, 1
cmp dword [edi + edx*4 - 4], 0
je 0x4378a9
inc ecx
mov dword [0x5e10e8], ecx
mov dword [ebx + ecx*4 - 4], edx
inc edx
cmp edx, eax
jle 0x437897
jmp 0x437722
mov eax, dword [0x5ed264]
test eax, eax
mov dword [0x5ed154], eax
jle 0x437722
mov ecx, dword [0x5e10e8]
mov edx, dword [ebp + 0x14]
mov dword [edx + ecx*4 - 4], eax
jmp 0x437722
jge 0x43743a
mov eax, dword [0x5ed29c]
test eax, eax
mov dword [esp + 4], eax
mov dword [0x5ed150], eax
jle 0x43743a
mov eax, dword [esp + 0x10]
and eax, 0xf
mov dword [esp + 8], eax
je 0x437917
test byte [esp + 8], 3
jne 0x4379fa
neg eax
add eax, 0x10
shr eax, 2
mov dword [esp + 8], eax
lea edx, [eax + 0x10]
cmp edx, dword [esp + 4]
jg 0x4379fa
mov eax, dword [esp + 4]
mov edx, eax
mov ecx, dword [esp + 8]
sub edx, ecx
and edx, 0xf
neg edx
add edx, eax
test ecx, ecx
jbe 0x43795b
mov dword [esp + 0x1c], esi
xor eax, eax
mov esi, ecx
mov edi, dword [esp + 0x10]
lea ecx, [eax + 1]
mov dword [edi + eax*4], ecx
mov eax, ecx
cmp ecx, esi
jb 0x437947
mov dword [esp + 8], esi
mov esi, dword [esp + 0x1c]
mov eax, 4
mov edi, dword [esp + 8]
mov dword [esp + 0xc], ebx
mov dword [esp], edx
movd xmm0, eax
lea edx, [edi + 1]
pshufd xmm1, xmm0, 0
lea ecx, [edi + 2]
lea ebx, [edi + 3]
lea eax, [edi + 4]
movd xmm0, edx
movd xmm2, ecx
movd xmm4, ebx
movd xmm3, eax
mov eax, edi
punpcklqdq xmm0, xmm2
punpcklqdq xmm4, xmm3
shufps xmm0, xmm4, 0x88
mov edx, dword [esp]
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movdqa xmmword [ecx + eax*4], xmm0
paddd xmm0, xmm1
movdqa xmmword [ecx + eax*4 + 0x10], xmm0
paddd xmm0, xmm1
movdqa xmmword [ecx + eax*4 + 0x20], xmm0
paddd xmm0, xmm1
movdqa xmmword [ecx + eax*4 + 0x30], xmm0
add eax, 0x10
paddd xmm0, xmm1
cmp eax, edx
jb 0x4379a9
cmp edx, dword [esp + 4]
jae 0x43743a
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x10]
lea eax, [edx + 1]
mov dword [edi + edx*4], eax
mov edx, eax
cmp eax, ecx
jb 0x4379e9
jmp 0x43743a
xor edx, edx
jmp 0x4379d7
mov dword [esp + 4], 0
mov eax, 0x7fffffff
jmp 0x436ebe
mov dword [esp], 0x80000000
mov dword [esp + 4], 0
jmp 0x436dd2
mov ecx, 0x80000000
xor eax, eax
jmp 0x436fdb
mov eax, 0x7fffffff
xor edx, edx
jmp 0x4370d6