Function at 0x4277e0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x2f8
mov eax, dword [0x480054]
xor eax, esp
mov dword [esp + 0x2f4], eax
push esi
mov esi, dword [ebp + 0xc]
lea eax, [esp + 0x74]
push edi
push 0x7c
push 0
push eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], esi
call fcn.004396e0
push 0x80
lea eax, [esp + 0x208]
push 0
push eax
call fcn.004396e0
movsx edx, byte [esi]
add esp, 0x18
mov eax, dword [esp + 0x3c]
movsx edi, byte [esi + 1]
mov esi, 0xfffffffb
mov dword [esp + 0x18], 0x1f
movd xmm0, edx
mov eax, dword [eax + 0xe8]
pshufd xmm0, xmm0, 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x4c], 0
cmp dword [eax - 0x14], 0
mov dword [esp + 0x20], edx
movaps xmmword [esp + 0x60], xmm0
mov dword [esp + 0x34], edi
mov dword [esp + 0xf4], 0xffffffff
mov dword [esp + 0x30], esi
mov dword [esp + 0x28], eax
jne 0x42789b
nop dword [eax]
inc esi
cmp dword [eax + esi*4], 0
je 0x427890
mov dword [esp + 0x30], esi
xor ecx, ecx
mov dword [esp + 0x48], ecx
test edx, edx
jle 0x427958
lea edx, [edi + 1]
mov dword [esp + 0x50], 0x7c
mov dword [esp + 0x1c], edx
nop dword [eax + eax]
mov eax, esi
cmp esi, edx
jg 0x427941
mov dword [esp + 0x40], 1
mov edi, esi
shl dword [esp + 0x40], cl
mov edx, esi
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x28]
test dword [esi + eax*4], ecx
mov esi, dword [esp + 0x30]
jne 0x427906
lea eax, [edi + 1]
mov edx, eax
mov edi, eax
mov dword [esp + 0x2c], edx
cmp eax, dword [esp + 0x1c]
jle 0x4278e2
mov ecx, dword [esp + 0x48]
jmp 0x42793d
mov ecx, dword [esp + 0x48]
lea edi, [ecx*4]
mov dword [esp + edi + 0x78], eax
mov eax, dword [esp + 0x50]
mov eax, dword [esp + eax + 0x78]
cmp edx, eax
jle 0x427933
mov dword [esp + 0x18], ecx
mov dword [esp + 0x50], edi
mov dword [esp + 0xc], 0
jmp 0x42793d
cmp dword [esp + 0x2c], eax
jne 0x42793d
inc dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x48], ecx
cmp ecx, dword [esp + 0x20]
jl 0x4278c0
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x34]
xor edx, edx
mov dword [esp + 0x1c], edx
cmp esi, edi
jg 0x4279f6
nop word [eax + eax]
cmp dword [eax + esi*4], 0
mov edi, 1
jbe 0x4279d7
cmp dword [esp + 0x20], 0
jle 0x4279e2
mov eax, dword [esp + 0x20]
mov ecx, edi
mov dword [esp + 0x30], eax
nop dword [eax]
lea eax, [edx + 1]
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x28]
test dword [edx + esi*4], ecx
mov edx, dword [esp + 0x1c]
je 0x4279b3
cmp dword [esp + 0x38], 0
mov edi, 1
cmovne eax, edx
jmp 0x4279c2
cmp edi, 1
cmovne eax, edx
xor edi, edi
inc dword [esp + esi*4 + 0x1f8]
mov edx, eax
rol ecx, 1
sub dword [esp + 0x30], 1
mov dword [esp + 0x1c], edx
jne 0x427990
mov eax, dword [esp + 0x28]
jmp 0x4279e2
mov ecx, dword [esp + 0x20]
mov dword [esp + esi*4 + 0x1f8], ecx
xor edi, 1
inc esi
add edx, edi
mov dword [esp + 0x1c], edx
cmp esi, dword [esp + 0x34]
jle 0x427970
mov esi, dword [esp + 0x24]
mov eax, 0x66666667
mov edi, dword [esp + 0x3c]
mov ecx, dword [esi + 0xc]
imul ecx, edx
imul ecx
mov eax, dword [esp + 0x20]
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea edx, [eax - 2]
mov dword [esp + 0x50], edx
mov edx, dword [esp + edx*4 + 0x78]
mov dword [esp + eax*4 + 0x78], edx
mov eax, dword [edi + 0xd4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x5c], edx
cmp eax, 1
jne 0x427a40
sub ecx, dword [esi + 0x34]
jmp 0x427a48
cmp eax, 2
jne 0x427a4c
sub ecx, dword [esi + 0x30]
mov dword [esp + 0x14], ecx
cmp dword [esp + 0xc], 0
mov dword [esp + 0x2c], 1
jle 0x427ad4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + ecx*4 + 0x78]
mov dword [esp + 0x30], edx
mov esi, dword [eax + edx*4 - 4]
not esi
and esi, dword [edi + 8]
mov edi, ecx
cmp ecx, dword [esp + 0x20]
jge 0x427ad4
mov eax, dword [esp + 0x2c]
rol eax, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x40], eax
nop
cmp edx, dword [esp + edi*4 + 0x78]
jne 0x427ac9
rol eax, 1
mov edx, 1
test esi, eax
je 0x427aaf
lea ecx, [edi + 1]
mov eax, edx
rol eax, cl
rol eax, 1
inc edx
test esi, eax
jne 0x427aa8
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x4c], edx
jge 0x427ac5
mov dword [esp + 0x4c], edx
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x30]
inc edi
rol eax, 1
mov dword [esp + 0x40], eax
cmp edi, ecx
jl 0x427a90
push 0x80
lea eax, [esp + 0x17c]
push 0
push eax
call fcn.004396e0
push 0x80
lea eax, [esp + 0x108]
push 0
push eax
call fcn.004396e0
push 0x80
lea eax, [esp + 0x114]
push 0
push eax
call fcn.004396e0
push 0x80
lea eax, [esp + 0x2a0]
push 0
push eax
call fcn.004396e0
movsd xmm6, qword [0x4780b0]
xor edi, edi
add esp, 0x30
mov dword [esp + 0x1c], edi
xorps xmm7, xmm7
xorps xmm4, xmm4
cmp dword [esp + 0x20], edi
jle 0x427cac
movsd xmm2, qword [0x4780e0]
nop dword [eax]
mov edx, dword [esp + edi*4 + 0x7c]
lea eax, [esp + edi*4 + 0x70]
mov ecx, dword [esp + edi*4 + 0x74]
add edx, 6
mov esi, dword [esp + edi*4 + 0x78]
add ecx, 6
mov dword [esp + 0x40], eax
inc esi
xor eax, eax
mov dword [esp + 0x30], 0
cmp ecx, edx
lea edx, [esp + edi*4 + 0x70]
setl al
lea eax, [eax*8 + 4]
mov eax, dword [eax + edx]
add eax, 6
cmp eax, esi
cmovl esi, eax
cmp esi, dword [esp + 0x34]
jg 0x427c9d
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
rol edi, cl
mov dword [esp + 0x38], edi
mov edi, 0x14
sub edi, esi
nop
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
test dword [ecx + esi*4], eax
mov eax, dword [esp + 0x1c]
jne 0x427c87
cmp esi, 0x14
jge 0x427be0
movd xmm1, edi
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm2
addsd xmm1, xmm1
addsd xmm1, xmm6
jmp 0x427be3
movaps xmm1, xmm6
mov ecx, 1
cmp eax, ecx
jbe 0x427c1c
cmp dword [esp + eax*4 + 0x74], esi
jle 0x427c1c
cmp dword [edx], esi
jle 0x427c1c
mov eax, dword [esp + 0x24]
movd xmm0, dword [eax + 8]
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm4, xmm0
test esi, esi
js 0x427c89
inc dword [esp + esi*4 + 0xf8]
jmp 0x427c89
cmp eax, dword [esp + 0x50]
jge 0x427c4f
cmp dword [esp + eax*4 + 0x7c], esi
jle 0x427c4f
cmp dword [edx + 0x10], esi
jle 0x427c4f
mov eax, dword [esp + 0x24]
movd xmm0, dword [eax + 8]
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm4, xmm0
test esi, esi
js 0x427c89
inc dword [esp + esi*4 + 0xf8]
jmp 0x427c89
test esi, esi
js 0x427c5a
inc dword [esp + esi*4 + 0x178]
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 4]
je 0x427c73
cdq
sub eax, edx
mov edx, dword [esp + 0x40]
sar eax, 1
jmp 0x427c75
add eax, eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm4, xmm0
jmp 0x427c89
xor ecx, ecx
inc esi
mov dword [esp + 0x30], ecx
dec edi
cmp esi, dword [esp + 0x34]
jle 0x427bb0
mov edi, dword [esp + 0x1c]
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0x20]
jl 0x427b50
mov edx, dword [esp + 0x34]
xor ecx, ecx
test edx, edx
js 0x427cd8
cmp dword [esp + ecx*4 + 0x178], 0
jg 0x427cc7
inc ecx
cmp ecx, edx
jle 0x427cb6
jmp 0x427cd8
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x24]
inc eax
imul eax, dword [ecx + 0x24]
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x28], 0
je 0x427ddb
mov edi, dword [esp + 0x34]
xor ecx, ecx
or esi, 0xffffffff
mov dword [esp + 0x40], ecx
lea edx, [ecx + 5]
test edi, edi
js 0x427dd9
mov eax, edx
cmp dword [esp + ecx*4 + 0x178], 0
jle 0x427dc2
test edx, edx
jle 0x427dcf
dec edx
inc esi
dec eax
mov dword [esp + 0x1c], edx
xor edi, edi
mov dword [esp + 0x48], esi
mov dword [esp + 0x30], eax
cmp dword [esp + 0x20], edi
jl 0x427dbe
mov eax, dword [esp + 0x28]
mov esi, 1
nop word [eax + eax]
test dword [eax + ecx*4], esi
jne 0x427da9
mov eax, ecx
sub eax, dword [esp + edi*4 + 0x78]
cmp eax, dword [esp + 0x30]
jle 0x427d6d
mov ecx, dword [esp + 0x48]
add ecx, 0xfffffffc
add eax, ecx
mov ecx, dword [esp + 0x40]
imul eax, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, 4
test eax, eax
jle 0x427da5
mov edx, dword [esp + 0x28]
test dword [edx + ecx*4 - 4], esi
mov edx, dword [esp + 0x1c]
je 0x427da5
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0x28]
imul ecx, eax
mov eax, 0x66666667
imul ecx, edx
imul ecx
mov ecx, dword [esp + 0x40]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
inc edi
rol esi, 1
cmp edi, dword [esp + 0x20]
jle 0x427d40
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x34]
inc ecx
mov dword [esp + 0x40], ecx
cmp ecx, edi
jle 0x427d00
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x34]
jmp 0x427ddb
mov edx, edi
cmp dword [eax + 0x20], 0
movsd xmm5, qword [0x4780d8]
je 0x427f73
xor eax, eax
xor edi, edi
mov dword [esp + 0x30], eax
mov ecx, edx
test edx, edx
js 0x427e53
nop dword [eax + eax]
cmp dword [esp + eax*4 + 0x178], 0
jle 0x427e4a
cmp edi, 4
jge 0x427e53
inc edi
xor esi, esi
mov dword [esp + 0x38], edi
cmp dword [esp + 0x20], esi
jl 0x427e4a
mov edx, 1
mov edi, dword [esp + 0x28]
test dword [edi + eax*4], edx
mov edi, dword [esp + 0x38]
jne 0x427e3d
mov eax, dword [esp + esi*4 + 0x78]
add eax, edi
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [esp + 0x30]
inc esi
rol edx, 1
cmp esi, dword [esp + 0x20]
jle 0x427e21
mov edx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x30], eax
cmp eax, edx
jle 0x427e00
mov edi, dword [esp + 0x20]
xor edx, edx
lea esi, [edi + 1]
test edi, edi
js 0x427f03
cmp esi, 8
jb 0x427ef0
cmp dword [0x485734], 2
jl 0x427ef0
and esi, 0x80000007
jns 0x427e87
dec esi
or esi, 0xfffffff8
inc esi
movaps xmm3, xmmword [0x478270]
mov eax, edi
movd xmm0, ecx
sub eax, esi
pshufd xmm1, xmm0, 0
movaps xmm2, xmm1
nop
movups xmm0, xmmword [esp + edx*4 + 0x78]
paddd xmm0, xmm3
pminsd xmm1, xmm0
movups xmm0, xmmword [esp + edx*4 + 0x88]
add edx, 8
paddd xmm0, xmm3
pminsd xmm2, xmm0
cmp edx, eax
jle 0x427ea0
pminsd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pminsd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
pminsd xmm1, xmm0
movd ecx, xmm1
cmp edx, edi
jg 0x427f03
nop dword [eax]
mov eax, dword [esp + edx*4 + 0x78]
add eax, 6
cmp eax, ecx
cmovge eax, ecx
inc edx
mov ecx, eax
cmp edx, edi
jle 0x427ef0
mov edx, dword [esp + 0x34]
movaps xmm2, xmm7
cmp ecx, edx
jg 0x427f46
mov eax, 0x14
sub eax, ecx
cmp ecx, 0xa
jge 0x427f28
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm5
jmp 0x427f2b
movaps xmm1, xmm6
movd xmm0, dword [esp + ecx*4 + 0x1f8]
dec eax
cvtdq2pd xmm0, xmm0
inc ecx
mulsd xmm0, xmm1
addsd xmm2, xmm0
cmp ecx, edx
jle 0x427f15
mov eax, dword [esp + 0x24]
movd xmm0, dword [esp + 0x14]
cvtdq2pd xmm0, xmm0
movd xmm1, dword [eax + 0x20]
cvtdq2pd xmm1, xmm1
mulsd xmm1, xmm2
mulsd xmm1, qword [0x478090]
addsd xmm1, xmm0
cvttsd2si esi, xmm1
jmp 0x427f77
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x7c]
xor ecx, ecx
cvttsd2si eax, xmm4
add esi, eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], esi
test eax, eax
js 0x42801c
mov eax, 0xfffffffe
mov edx, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], edx
nop dword [eax]
mov esi, dword [esp + ecx*4 + 0x78]
sub esi, edi
cmp ecx, dword [esp + 0x18]
jne 0x427fc8
mov esi, dword [esp + 0x4c]
add ecx, esi
add edx, esi
add eax, esi
jmp 0x428003
mov eax, esi
cdq
mov edi, eax
xor edi, edx
sub edi, edx
mov edx, dword [esp + 0x40]
cmp edx, dword [esp + 0x18]
jne 0x427fdf
test esi, esi
jg 0x427fff
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x40]
cmp eax, dword [esp + 0x18]
jne 0x427ff1
test esi, esi
js 0x428003
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
imul eax, edi
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + ecx*4 + 0x78]
inc edx
inc ecx
mov dword [esp + 0x40], edx
inc eax
mov dword [esp + 0x1c], eax
cmp ecx, dword [esp + 0x20]
jle 0x427fb0
mov eax, dword [esp + 0x20]
xor edi, edi
movsd qword [esp + 0x40], xmm6
xor ecx, ecx
test eax, eax
jle 0x428087
cmp eax, 8
jb 0x428087
and eax, 0x80000007
jns 0x42803b
dec eax
or eax, 0xfffffff8
inc eax
mov edx, dword [esp + 0x20]
xorps xmm2, xmm2
sub edx, eax
xorps xmm1, xmm1
movups xmm0, xmmword [esp + ecx*4 + 0x78]
paddd xmm2, xmm0
movups xmm0, xmmword [esp + ecx*4 + 0x88]
add ecx, 8
paddd xmm1, xmm0
cmp ecx, edx
jl 0x428047
mov eax, dword [esp + 0x20]
paddd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edi, xmm1
xor edx, edx
xor esi, esi
cmp ecx, eax
jge 0x4280c2
sub eax, ecx
cmp eax, 2
jl 0x4280b9
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x38], eax
nop
add edx, dword [esp + ecx*4 + 0x78]
add esi, dword [esp + ecx*4 + 0x7c]
add ecx, 2
mov eax, ecx
cmp ecx, dword [esp + 0x38]
jl 0x4280a0
cmp eax, dword [esp + 0x20]
jge 0x4280bd
add edi, dword [esp + ecx*4 + 0x78]
lea eax, [esi + edx]
add edi, eax
mov ecx, dword [esp + 0x8c]
mov eax, ecx
cmp dword [esp + 0x90], ecx
mov edx, dword [esp + 0x88]
cmovl eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x84]
cmp edx, ecx
movd xmm0, edi
cmovl ecx, edx
pshufd xmm3, xmm0, 0
cmp eax, ecx
cmovl ecx, eax
cmp ecx, 8
jge 0x428119
mov eax, 8
sub eax, ecx
mov ecx, dword [esp + 0x24]
imul eax, dword [ecx]
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax*2]
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 0x20]
lea eax, [esi + esi*4]
add eax, eax
cmp edi, eax
jge 0x428148
movd xmm1, edi
cvtdq2pd xmm1, xmm1
movd xmm0, esi
cvtdq2pd xmm0, xmm0
divsd xmm1, xmm0
divsd xmm1, xmm5
addsd xmm1, xmm7
movsd qword [esp + 0x40], xmm1
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x28], edx
test esi, esi
jle 0x4281ec
cmp esi, 8
jb 0x4281ec
cmp dword [0x485734], 2
jl 0x4281ec
mov eax, esi
and eax, 0x80000007
jns 0x42817c
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm4, xmmword [esp + 0x60]
mov edx, esi
sub edx, eax
xorps xmm2, xmm2
xorps xmm1, xmm1
nop dword [eax + eax]
movups xmm0, xmmword [esp + ecx*4 + 0x78]
pmulld xmm0, xmm4
psubd xmm0, xmm3
pabsd xmm0, xmm0
paddd xmm2, xmm0
movups xmm0, xmmword [esp + ecx*4 + 0x88]
add ecx, 8
pmulld xmm0, xmm4
psubd xmm0, xmm3
pabsd xmm0, xmm0
paddd xmm1, xmm0
cmp ecx, edx
jl 0x428190
paddd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edx, xmm1
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x20]
xor esi, esi
mov dword [esp + 0x1c], esi
cmp ecx, eax
jge 0x428272
sub eax, ecx
cmp eax, 2
jl 0x428251
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x38], eax
nop
mov eax, dword [esp + ecx*4 + 0x78]
imul eax, dword [esp + 0x20]
sub eax, edi
cdq
xor eax, edx
sub eax, edx
add esi, eax
mov eax, dword [esp + ecx*4 + 0x7c]
imul eax, dword [esp + 0x20]
add ecx, 2
sub eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x1c]
add edx, eax
mov eax, ecx
mov dword [esp + 0x1c], edx
cmp ecx, dword [esp + 0x38]
jl 0x428210
mov dword [esp + 0x1c], edx
cmp eax, dword [esp + 0x20]
jge 0x428269
mov eax, dword [esp + ecx*4 + 0x78]
imul eax, dword [esp + 0x20]
sub eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x1c]
add dword [esp + 0x28], eax
lea eax, [edx + esi]
mov edx, dword [esp + 0x28]
add edx, eax
mov eax, dword [esp + 0x24]
xor ecx, ecx
movd xmm1, dword [ebp + 0x1c]
mov esi, 0xfffffffb
cvtdq2pd xmm1, xmm1
mov eax, dword [eax + 0x3c]
imul eax, edx
cdq
idiv dword [esp + 0x20]
cdq
idiv dword [esp + 0x20]
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
cmp byte [eax + 4], cl
cmove esi, ecx
comisd xmm1, xmm7
jbe 0x4282b7
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x14]
imul eax, dword [ebp + 0x18]
sub esi, eax
mov eax, dword [esp + 0x24]
xor edx, edx
movsd xmm4, qword [esp + 0x40]
mulsd xmm1, xmm4
movd xmm0, dword [eax + 0x38]
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
add esi, eax
cmp dword [ebp + 0x10], 2
jne 0x4283ed
cmp byte [ebp + 0x28], cl
je 0x4283ed
mov ecx, dword [ebp + 0x24]
test ecx, ecx
jle 0x4283ed
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x2c]
test eax, eax
jle 0x4283ed
mov ecx, dword [esp + 0x24]
sub esi, dword [ecx + 0x30]
mov ecx, dword [ebp + 0x24]
cmp ecx, 3
jl 0x428362
lea eax, [ecx + ecx]
cmp dword [ebp + 0x20], eax
jl 0x4283b0
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x10]
shl eax, 3
movd xmm1, eax
mov eax, dword [edx + 4]
add eax, eax
cvtdq2pd xmm1, xmm1
movd xmm0, eax
mov eax, dword [esp + 0x10]
cvtdq2pd xmm0, xmm0
mov ecx, dword [eax]
mulsd xmm1, xmm4
addsd xmm1, xmm0
cvttsd2si edx, xmm1
neg edx
add ecx, edx
mov dword [esp + 0x28], ecx
mov dword [eax], ecx
jmp 0x428404
cmp ecx, 2
jl 0x428389
lea eax, [ecx + ecx]
cmp dword [ebp + 0x20], eax
jl 0x4283b0
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 8]
lea ecx, [edx + edx*4]
cdq
sub eax, edx
sar eax, 1
add ecx, eax
movd xmm0, ecx
jmp 0x4283a2
cmp byte [ebp + 0x28], 1
jne 0x4283c0
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 8]
cdq
sub eax, edx
sar eax, 1
add eax, dword [ecx + 0x2c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm4
cvttsd2si edx, xmm0
neg edx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
add ecx, edx
mov dword [esp + 0x28], ecx
mov dword [eax], ecx
jmp 0x428404
cmp byte [ebp + 0x28], 2
jne 0x4283ed
cdq
sub eax, edx
sar eax, 1
neg eax
movd xmm0, eax
mov eax, dword [esp + 0x10]
cvtdq2pd xmm0, xmm0
mov ecx, dword [eax]
mulsd xmm0, xmm4
cvttsd2si edx, xmm0
add ecx, edx
mov dword [esp + 0x28], ecx
mov dword [eax], ecx
jmp 0x428404
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
mov dword [eax], ecx
mov ecx, dword [ebp + 0x24]
test ecx, ecx
jle 0x428489
mov eax, dword [ebp + 0x34]
cmp eax, 4
jl 0x428489
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 0x18], 0
mov ecx, dword [ebp + 0x24]
jle 0x428489
add eax, 0xc
imul eax, dword [esp + 0x20]
sub edi, eax
test edi, edi
jle 0x428489
mov eax, dword [esp + 0x24]
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, dword [eax + 0x38]
mov eax, dword [eax + 0x14]
imul eax, dword [ebp + 0x20]
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm4
mulsd xmm1, xmm0
cvttsd2si ecx, xmm1
sub ecx, eax
lea eax, [ecx + edx]
test eax, eax
jns 0x428489
mov ecx, dword [esp + 0x24]
imul eax, edi
mov edi, dword [esp + 0x20]
imul eax, dword [ecx + 0x18]
cdq
idiv edi
mov ecx, eax
mov eax, 0xae147ae1
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
add esi, eax
jmp 0x42848d
mov edi, dword [esp + 0x20]
add dword [esp + 0x14], esi
cmp dword [esp + 0xc], 0
movsd xmm5, qword [0x4780c0]
jne 0x4287f6
mov esi, dword [esp + 0x18]
test esi, esi
jle 0x4287b3
lea eax, [edi - 1]
cmp esi, eax
jge 0x4287b1
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x2c]
mov dword [esp + 0x30], edx
test edx, edx
jle 0x4287b1
mov eax, dword [esp + esi*4 + 0x74]
mov edi, eax
mov ecx, dword [esp + esi*4 + 0x7c]
cmp eax, ecx
cmovl edi, ecx
mov dword [esp + 0x38], edi
jne 0x4285e3
cmp dword [esp + edi*4 + 0x178], 0
jne 0x4285e3
cmp dword [esp + edi*4 + 0x174], 0
jne 0x4285e3
cmp dword [esp + edi*4 + 0xf8], 0
jne 0x4285e3
cmp dword [esp + edi*4 + 0xf4], 0
jne 0x4285e3
xor esi, esi
cmp dword [esp + 0x18], 1
jle 0x42853c
mov edx, dword [esp + 0x18]
add eax, 0xfffffffe
cmp dword [esp + edx*4 + 0x70], eax
mov edx, dword [esp + 0x30]
cmovge esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x18], eax
jge 0x428557
lea eax, [ecx - 2]
mov ecx, dword [esp + 0x18]
cmp dword [esp + ecx*4 + 0x80], eax
jl 0x428557
inc esi
test esi, esi
je 0x4287bf
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x3c]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mov eax, dword [eax + 0xe8]
mov eax, dword [eax + edi*4]
not eax
and eax, dword [ecx + 8]
mov ecx, dword [esp + 0x18]
shl dword [esp + 0x2c], cl
mulsd xmm0, xmm4
cvttsd2si edx, xmm0
sub dword [esp + 0x14], edx
cmp eax, dword [esp + 0x2c]
jne 0x4287bf
sub dword [esp + 0x14], edx
dec ecx
mov edx, 7
shl edx, cl
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0xe8]
mov eax, dword [eax + edi*4 - 4]
not eax
and eax, dword [ecx + 8]
cmp eax, edx
jne 0x4287bf
mov ecx, dword [esp + 0x24]
imul esi, dword [ecx + 0x2c]
movd xmm0, esi
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm4
cvttsd2si eax, xmm0
sub dword [esp + 0x14], eax
jmp 0x4287bf
cmp edi, 6
jg 0x4285f6
mov eax, edi
sub eax, dword [ebp + 0x30]
cmp eax, 1
jle 0x4287bf
mov eax, dword [esp + 0x3c]
dec esi
mov ecx, dword [esp + 0x18]
inc ecx
mov edx, dword [eax + 0xe8]
mov dword [esp + 0x30], edx
mov eax, dword [edx + edi*4 - 4]
bt eax, ecx
setae cl
bt eax, esi
setae al
test al, cl
je 0x4287bf
cmp dword [esp + edi*4 + 0x178], 0
jne 0x4287bf
cmp dword [esp + edi*4 + 0x174], 0
jne 0x4287bf
cmp dword [esp + edi*4 + 0xf8], 0
jne 0x4287bf
cmp dword [esp + edi*4 + 0xf4], 1
jg 0x4287bf
mov eax, dword [edx + edi*4]
mov ecx, dword [esp + 0x18]
inc ecx
bt eax, ecx
setb dl
bt eax, esi
setb al
test al, dl
je 0x4287bf
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov esi, eax
shl esi, cl
mov ecx, dword [esp + 0x18]
and esi, dword [edx + edi*4 - 8]
neg esi
sbb esi, esi
lea ecx, [ecx - 1]
shl eax, cl
neg esi
and eax, dword [edx + edi*4 - 8]
mov edi, dword [esp + 0x38]
neg eax
sbb eax, eax
neg eax
add esi, eax
cmp esi, 1
jne 0x4287bf
movd xmm1, dword [ebp + 0x30]
movsd xmm3, qword [0x478098]
cvtdq2pd xmm1, xmm1
cmp edi, 6
jle 0x4286c9
movaps xmm2, xmm3
jmp 0x4286df
movaps xmm0, xmm1
movaps xmm2, xmm6
divsd xmm0, qword [0x4780d0]
mulsd xmm0, xmm3
subsd xmm2, xmm0
comisd xmm6, xmm4
jbe 0x428703
cmp edi, 6
jle 0x4286f4
movsd xmm2, qword [0x478088]
jmp 0x428703
divsd xmm1, xmm5
movaps xmm2, xmm6
addsd xmm1, xmm6
divsd xmm2, xmm1
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x3c]
movd xmm0, dword [eax + 8]
mov edx, dword [eax + 0x2c]
mov eax, dword [esi + edi*4]
mov ecx, dword [ecx + 8]
not eax
cvtdq2pd xmm0, xmm0
and eax, ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x18]
shl dword [esp + 0x2c], cl
movd xmm4, edx
addsd xmm0, xmm7
cvtdq2pd xmm4, xmm4
cmp eax, dword [esp + 0x2c]
jne 0x428782
mov edx, dword [esi + edi*4 - 4]
lea ecx, [ecx - 1]
movaps xmm1, xmm4
not edx
and edx, dword [esp + 0x38]
mov eax, 7
mulsd xmm1, xmm2
shl eax, cl
addsd xmm1, xmm4
addsd xmm1, xmm0
cmp edx, eax
jne 0x42879d
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x2c]
lea eax, [eax + eax*2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
jmp 0x428799
lea eax, [edx + edx]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, xmm2
mulsd xmm1, xmm3
addsd xmm1, xmm4
addsd xmm1, xmm0
movsd xmm4, qword [esp + 0x40]
mulsd xmm1, xmm4
cvttsd2si eax, xmm1
sub dword [esp + 0x14], eax
jmp 0x4287bf
test esi, esi
jne 0x4287bb
mov edi, dword [esp + esi*4 + 0x7c]
jmp 0x4287bf
mov edi, dword [esp + esi*4 + 0x74]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
mov edx, dword [eax + 0xe8]
mov esi, dword [edx + edi*4]
cmp edi, ecx
jg 0x4287fa
mov ecx, dword [edx + edi*4]
cmp esi, ecx
jne 0x4287f6
not ecx
and ecx, dword [eax + 8]
lea eax, [ecx - 1]
test ecx, eax
mov ecx, dword [esp + 0x34]
jne 0x4287fa
mov eax, dword [esp + 0x3c]
inc edi
cmp edi, ecx
jle 0x4287d4
jmp 0x4287fa
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x10], 0
jle 0x428e57
mov edx, 3
mov dword [esp + 0x18], edx
cmp ecx, edx
jle 0x428e57
movsd xmm3, qword [0x478140]
xor edi, edi
mov dword [esp + 0x40], edi
nop word [eax + eax]
cmp dword [esp + edi + 0x184], 0
je 0x428e3f
mov eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x54], eax
cmp eax, 1
jle 0x428e3f
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], 2
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1c], 2
mov eax, dword [eax + 0xe8]
mov dword [esp + 0x2c], eax
mov eax, dword [edi + eax + 0x10]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x78]
mov dword [esp + 0x48], eax
mov eax, ecx
mov edx, dword [esp + 0x30]
mov esi, eax
dec eax
mov dword [esp + 0x10], esi
bt edx, eax
mov edx, dword [esp + 0x18]
jae 0x428e1d
mov eax, dword [esp + 0x2c]
mov esi, 3
mov ecx, dword [esp + 0x20]
shl esi, cl
mov edx, dword [eax + edi]
mov eax, esi
or eax, edx
mov edx, dword [esp + 0x2c]
shl eax, 2
or eax, 3
mov dword [esp + 0x4c], eax
mov eax, dword [edi + edx + 4]
mov ecx, dword [edx + edi + 0xc]
or eax, esi
shl eax, 2
or eax, 3
mov dword [esp + 0x38], eax
mov eax, dword [edx + edi + 8]
mov edx, dword [edx + edi + 0x10]
or eax, esi
or edx, esi
shl eax, 2
or esi, ecx
shl edx, 2
mov ecx, dword [esp + 0x10]
or eax, 3
shl esi, 2
or edx, 3
or esi, 3
sar esi, cl
and esi, 7
cmp esi, 1
jne 0x428ba0
mov ecx, dword [esp + 0x1c]
dec ecx
cmp ecx, dword [esp + 0x50]
je 0x428e11
mov ecx, dword [esp + 0x10]
sar eax, cl
and eax, 7
cmp al, 3
jne 0x428e11
sar edx, cl
and edx, 0xd
cmp dl, 9
jne 0x428e11
mov edx, dword [esp + 0x38]
mov eax, edx
sar eax, cl
test al, 7
jne 0x428e11
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
dec eax
cmp dword [esi + 4], eax
jne 0x428e11
cmp dword [esi], eax
jne 0x428e11
mov eax, dword [esp + 0xc]
test dword [esp + 0x4c], eax
jne 0x428970
test edx, eax
jne 0x428e11
mov edx, dword [esp + 0x18]
mov eax, dword [esp + edi + 0x180]
cmp dword [esi + 8], edx
jle 0x4289cf
test eax, eax
jg 0x428e15
cmp dword [esp + edi + 0x188], 0
jg 0x428e15
cmp dword [esp + edi + 0x184], 1
jg 0x428e15
cmp dword [esp + edi + 0x100], 0
jg 0x428e15
cmp dword [esp + edi + 0x108], 0
jg 0x428e15
cmp dword [esp + edi + 0x104], 0
jle 0x428a1e
jmp 0x428e15
cmp eax, 1
jg 0x428e15
cmp dword [esp + edi + 0x188], 1
jg 0x428e15
cmp dword [esp + edi + 0x184], 2
jg 0x428e15
cmp dword [esp + edi + 0x100], 0
jg 0x428e15
cmp dword [esp + edi + 0x108], 0
jg 0x428e15
cmp dword [esp + edi + 0x104], 0
jg 0x428e15
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x4c]
lea ecx, [ecx + 2]
sar eax, cl
test al, 1
jne 0x428a3d
mov eax, edx
sub eax, dword [esi + 0xc]
cmp eax, 3
jg 0x428e15
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
movd xmm2, dword [eax + 0x10]
mov eax, dword [esp + 0x34]
cvtdq2pd xmm2, xmm2
add eax, 0xfffffffd
mulsd xmm2, xmm4
cvttsd2si edx, xmm2
neg edx
add esi, edx
mov dword [esp + 0x14], esi
cmp dword [esp + 0x18], eax
jg 0x428aac
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + eax + 0x18]
test dword [esp + 0xc], ecx
jne 0x428aac
mov eax, dword [esp + 0x3c]
not ecx
and ecx, dword [eax + 8]
lea eax, [ecx - 1]
test ecx, eax
jne 0x428aac
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 8]
lea eax, [eax + ecx*4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm4
cvttsd2si eax, xmm0
sub esi, eax
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x40]
mov esi, dword [eax + 8]
mov eax, dword [esp + 0x1c]
dec eax
bts ecx, eax
not ecx
and ecx, esi
lea eax, [ecx - 1]
test ecx, eax
jne 0x428e0d
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
inc eax
mov ecx, dword [ecx + edi + 0xc]
bts ecx, eax
not ecx
and ecx, esi
lea eax, [ecx - 1]
and ecx, eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x428b94
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + eax + 8]
not ecx
and ecx, esi
lea eax, [ecx - 1]
test ecx, eax
jne 0x428b85
mov esi, dword [esp + 0x14]
movaps xmm0, xmm2
mulsd xmm0, xmm3
cvttsd2si eax, xmm0
add esi, eax
mov eax, dword [esp + 0xc]
rol eax, 1
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x14], esi
test dword [edx + edi], eax
je 0x428e11
mov eax, dword [ebp + 0x30]
mov edx, dword [esp + 0x18]
cmp eax, 7
jge 0x428e15
inc eax
movaps xmm1, xmm2
mulsd xmm1, xmm5
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 4]
add eax, eax
divsd xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
cvttsd2si ecx, xmm1
addsd xmm0, xmm2
cvttsd2si eax, xmm0
neg eax
sub eax, ecx
add esi, eax
mov dword [esp + 0x14], esi
jmp 0x428e15
cvttsd2si eax, xmm2
add eax, edx
sub dword [esp + 0x14], eax
jmp 0x428e11
mov eax, dword [esp + 0xc]
rol eax, 2
jmp 0x428dde
cmp esi, 4
jne 0x428e11
mov esi, dword [esp + 0x1c]
dec esi
cmp esi, 1
je 0x428e11
mov ecx, dword [esp + 0x10]
sar eax, cl
and eax, 7
cmp al, 6
jne 0x428e11
mov ecx, esi
sar edx, cl
and edx, 0xb
cmp dl, 9
jne 0x428e11
mov edx, dword [esp + 0x38]
mov eax, edx
mov ecx, dword [esp + 0x10]
sar eax, cl
test al, 7
jne 0x428e11
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
dec eax
cmp dword [esi + 4], eax
jne 0x428e11
cmp dword [esi + 8], eax
jne 0x428e11
mov eax, dword [esp + 0xc]
rol eax, 4
test dword [esp + 0x4c], eax
jne 0x428c1c
test edx, eax
jne 0x428e11
mov edx, dword [esp + 0x18]
mov eax, dword [esp + edi + 0x180]
cmp dword [esi], edx
jle 0x428c7a
test eax, eax
jg 0x428e15
cmp dword [esp + edi + 0x188], 0
jg 0x428e15
cmp dword [esp + edi + 0x184], 1
jg 0x428e15
cmp dword [esp + edi + 0x100], 0
jg 0x428e15
cmp dword [esp + edi + 0x108], 0
jg 0x428e15
cmp dword [esp + edi + 0x104], 0
jle 0x428cc9
jmp 0x428e15
cmp eax, 1
jg 0x428e15
cmp dword [esp + edi + 0x188], 1
jg 0x428e15
cmp dword [esp + edi + 0x184], 2
jg 0x428e15
cmp dword [esp + edi + 0x100], 0
jg 0x428e15
cmp dword [esp + edi + 0x108], 0
jg 0x428e15
cmp dword [esp + edi + 0x104], 0
jg 0x428e15
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
sar eax, cl
test al, 1
jne 0x428ce5
mov eax, edx
sub eax, dword [esi - 4]
cmp eax, 3
jg 0x428e15
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
movd xmm2, dword [eax + 0x10]
mov eax, dword [esp + 0x34]
cvtdq2pd xmm2, xmm2
add eax, 0xfffffffd
mulsd xmm2, xmm4
cvttsd2si edx, xmm2
neg edx
add esi, edx
mov dword [esp + 0x14], esi
cmp dword [esp + 0x18], eax
jg 0x428d54
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + eax + 0x18]
test dword [esp + 0xc], ecx
jne 0x428d54
mov eax, dword [esp + 0x3c]
not ecx
and ecx, dword [eax + 8]
lea eax, [ecx - 1]
test ecx, eax
jne 0x428d54
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 8]
lea eax, [eax + ecx*4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm4
cvttsd2si eax, xmm0
sub esi, eax
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x40]
mov esi, dword [eax + 8]
mov eax, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x38], esi
bts ecx, eax
not ecx
and ecx, esi
lea eax, [ecx - 1]
test ecx, eax
jne 0x428e0d
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffffd
mov ecx, dword [esi + edi + 0xc]
mov esi, dword [esp + 0x38]
bts ecx, eax
not ecx
and ecx, esi
lea eax, [ecx - 1]
and ecx, eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x428dd7
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + eax + 8]
not ecx
and ecx, esi
lea eax, [ecx - 1]
test ecx, eax
jne 0x428b85
mov esi, dword [esp + 0x14]
movaps xmm0, xmm2
mulsd xmm0, xmm3
cvttsd2si eax, xmm0
add esi, eax
mov eax, dword [esp + 0xc]
ror eax, 1
jmp 0x428b24
mov eax, dword [esp + 0xc]
ror eax, 2
mov esi, dword [esp + 0x2c]
test dword [esi + edi + 0xc], eax
mov esi, dword [esp + 0x14]
jne 0x428df9
movaps xmm0, xmm2
mulsd xmm0, xmm3
cvttsd2si eax, xmm0
add esi, eax
divsd xmm2, xmm5
neg edx
cvttsd2si eax, xmm2
sub edx, eax
add esi, edx
mov dword [esp + 0x14], esi
jmp 0x428e11
sub dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x48], 4
inc eax
rol ecx, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], ecx
cmp esi, dword [esp + 0x54]
jl 0x428884
mov ecx, dword [esp + 0x34]
inc edx
add edi, 4
mov dword [esp + 0x18], edx
mov dword [esp + 0x40], edi
cmp edx, ecx
jl 0x428830
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x40], 0
jle 0x428fb4
cmp dword [ebp + 0x1c], 1
jge 0x428fb4
mov ecx, dword [esp + 0x84]
mov esi, ecx
cmp ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x8c]
cmovl esi, dword [esp + 0x88]
mov edx, dword [esp + 0x78]
cmp esi, edi
mov ecx, dword [esp + 0x20]
cmovl esi, edi
cmp esi, dword [esp + 0x90]
cmovl esi, dword [esp + 0x90]
cmp edx, dword [esp + 0x7c]
mov eax, dword [esp + ecx*4 + 0x6c]
cmovl edx, dword [esp + 0x7c]
cmp edx, dword [esp + 0x80]
cmovl edx, dword [esp + 0x80]
cmp edx, eax
cmovl edx, eax
mov eax, dword [esp + ecx*4 + 0x74]
cmp edx, dword [esp + 0x5c]
cmovl edx, dword [esp + 0x5c]
cmp edx, eax
cmovl edx, eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x5c], edx
cmp eax, dword [esp + 0x84]
jge 0x428ef1
cmp eax, edi
jle 0x428efe
cmp edi, dword [esp + 0x90]
jge 0x428f07
cmp edi, eax
jg 0x428f07
mov esi, 0xfffffff6
mov ecx, esi
jmp 0x428f3c
xor eax, eax
test ecx, ecx
jle 0x428f1b
nop dword [eax]
cmp dword [esp + eax*4 + 0x78], esi
jg 0x428efe
inc eax
cmp eax, ecx
jl 0x428f10
test esi, esi
jle 0x428f37
mov ecx, dword [esp + 0x34]
mov eax, esi
sub ecx, esi
sub eax, edx
add ecx, ecx
cmp ecx, eax
mov ecx, 0xfffffff6
cmovge esi, ecx
jmp 0x428f3c
mov ecx, 0xfffffff6
mov eax, dword [esp + 0x34]
add eax, 0xfffffffc
cmp esi, eax
cmovle esi, ecx
mov ecx, esi
sub ecx, edx
cmp ecx, 9
jge 0x428f6a
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 4]
imul eax, ecx
cdq
sub eax, edx
sar eax, 1
cmp dword [esp + 0x58], eax
jg 0x428fb4
mov edx, dword [esp + 0x5c]
cmp esi, 8
jle 0x428fb4
lea eax, [esi - 1]
cmp dword [esp + eax*4 + 0x178], 0
mov ecx, dword [esp + 0x28]
jne 0x428fb4
cmp dword [esp + eax*4 + 0xf8], 0
jne 0x428fb4
sub eax, 1
jns 0x428f72
lea edi, [esi*4]
cmp esi, dword [esp + 0x34]
jge 0x428fd2
cmp dword [esp + edi + 0x178], 1
jg 0x428fb0
cmp dword [esp + edi + 0xf8], 1
jle 0x428fd2
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add eax, edx
pop edi
pop esi
mov ecx, dword [esp + 0x2f4]
xor ecx, esp
call fcn.0042e28e
mov esp, ebp
pop ebp
ret
sub edi, dword [esp + 0x90]
sub edi, dword [esp + 0x8c]
sub edi, dword [esp + 0x88]
sub edi, dword [esp + 0x84]
cmp edi, 3
je 0x428ffe
test edi, edi
je 0x428ffe
mov eax, ecx
cmp edi, 4
jne 0x428fb8
mov eax, dword [esp + 0x3c]
movsx eax, word [eax + 2]
sub eax, edx
lea edx, [esi + 1]
add edx, eax
mov eax, dword [esp + 0x24]
mov esi, dword [eax + 0x40]
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 4]
imul edx, esi
lea eax, [eax + ecx*2]
lea ecx, [edx + eax*2]
test edi, edi
jle 0x42903b
mov eax, 0x55555555
imul esi
sub edx, esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
add ecx, eax
mov eax, dword [esp + 0x28]
test ecx, ecx
jle 0x428fb4
mov edx, dword [esp + 0x14]
sub edx, ecx
mov ecx, dword [esp + 0x2fc]
pop edi
pop esi
xor ecx, esp
add eax, edx
call fcn.0042e28e
mov esp, ebp
pop ebp
ret