Function at 0x40f570
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x180
mov eax, dword [0x420068]
xor esi, esi
cmp dword [eax], 0
je 0x410a26
mov eax, dword [0x42006c]
cmp dword [eax], 0
je 0x410a26
call dword [0x420188]
mov ebx, eax
call fcn.00418db0
mov dword [esp + 0x7c], eax
mov edx, 0x55555556
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f5ed
xor ecx, ecx
lea eax, [ebx + 2]
sub ecx, dword [esp + 0x7c]
sub eax, ecx
mov dword [esp + 0x7c], eax
jmp 0x40f5de
inc dword [esp + 0x7c]
mov eax, dword [esp + 0x7c]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x40f5da
jmp 0x40f631
mov eax, dword [esp + 0x7c]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp + 0x7c]
je 0x4108b0
sub eax, ebx
mov esi, 0x55555556
add eax, 2
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x7c]
jmp 0x40f61f
inc dword [esp + 0x7c]
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f617
call fcn.00418db0
mov dword [esp + 0x7c], eax
mov edx, 0x55555556
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
mov eax, dword [esp + 0x7c]
je 0x40f687
neg eax
mov ecx, 0x42
sub ecx, eax
mov dword [esp + 0x7c], ecx
mov eax, dword [esp + 0x7c]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
jne 0x40f6d1
inc dword [esp + 0x7c]
mov eax, dword [esp + 0x7c]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x40f673
jmp 0x40f6d1
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
mov eax, dword [esp + 0x7c]
je 0x41091c
add eax, 0xffffffc2
mov esi, 0x55555556
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x7c]
jmp 0x40f6bf
xor eax, eax
mov ecx, 1
sub eax, dword [esp + 0x7c]
sub ecx, eax
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f6aa
lea esi, [esp + 0x7c]
mov dword [esp + 4], 0x40000
push 0x7a
push esi
call fcn.00418e70
add esp, 8
push 1
push esi
call fcn.00409a80
add esp, 8
call fcn.00418db0
mov dword [esp + 0x18], eax
mov edx, 0x55555556
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f749
xor eax, eax
sub eax, dword [esp + 0x18]
neg eax
lea eax, [esp + eax + 0x7e]
mov dword [esp + 0x18], eax
jmp 0x40f73a
xor eax, eax
mov ecx, 1
sub eax, dword [esp + 0x18]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x40f729
jmp 0x40f799
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
mov eax, dword [esp + 0x18]
je 0x410993
sub eax, esi
mov esi, 0x55555556
add eax, 2
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
jmp 0x40f787
xor eax, eax
mov ecx, 1
sub eax, dword [esp + 0x18]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f772
mov dword [esp + 0x60], ebx
xor esi, esi
mov ebx, 0x55555556
xor edi, edi
push esi
push dword [esp + 8]
call fcn.0040ac80
add esp, 8
mov esi, eax
lea eax, [esp + 0x64]
push eax
push dword [esp + 8]
push esi
push 0x10
call dword [0x420068]
cmp eax, 0xc0000004
mov dword [esp + 0x54], esi
jne 0x40f995
mov esi, dword [esp + 0x64]
mov eax, 0x10000
add esi, eax
and esi, 0xffff0000
mov dword [esp + 4], esi
call fcn.00418db0
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f840
mov eax, esi
xor esi, 2
and eax, 2
or esi, eax
add dword [esp + 0x18], esi
mov eax, dword [esp + 0x18]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
jne 0x40f982
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x40f82a
jmp 0x40f982
mov eax, dword [esp + 0x18]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp + 0x18]
je 0x40f892
mov ecx, 0x21ff45a9
sub ecx, esi
lea eax, [ecx + eax - 0x21ff45a7]
mov dword [esp + 0x18], eax
jmp 0x40f877
xor eax, eax
mov ecx, 1
sub eax, dword [esp + 0x18]
sub ecx, eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40f866
jmp 0x40f982
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp + 0x18]
je 0x40f8fc
mov eax, esi
xor esi, 3
add ecx, 2
and eax, 3
or esi, eax
imul esi, ecx
mov dword [esp + 0x18], esi
jmp 0x40f8ba
dec eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x40f982
mov ecx, dword [esp + 0x18]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x18]
jne 0x40f8b5
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp + 0x18], ecx
jmp 0x40f8ba
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40f982
mov eax, dword [esp + 0x18]
mov ecx, esi
mov edx, esi
and esi, 0x17
not ecx
and edx, 0xf3fd902
and ecx, 0xf0c026fd
or edx, ecx
xor edx, 0xf0c026ea
add eax, 0xb
or esi, edx
cdq
idiv esi
jmp 0x40f941
inc eax
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40f982
mov ecx, dword [esp + 0x18]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x18]
jne 0x40f940
neg eax
not eax
jmp 0x40f941
mov esi, dword [esp + 0x54]
inc edi
cmp edi, 0xa
jb 0x40f7a6
jmp 0x4108a0
test eax, eax
js 0x4108a0
push 0x80
push dword [ebp + 8]
call fcn.00419580
add esp, 8
cmp dword [esi], 0
je 0x410a18
add esi, 4
add eax, eax
xor ebx, ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], eax
mov eax, ebx
not eax
or eax, 0xffffe000
cmp eax, 0xffffe0bf
jne 0x40f9df
push 1
call fcn.004042a0
add esp, 4
mov eax, dword [esp + 0x58]
mov edi, ebx
xor esi, esi
shl edi, 4
mov eax, dword [eax + edi]
cmp eax, 4
je 0x41087c
push eax
push 0
push 0x40
call dword [0x420110]
test eax, eax
mov dword [esp + 0xc], eax
je 0x41087c
mov eax, dword [esp + 0x58]
movzx esi, word [eax + edi + 6]
call fcn.00418db0
mov dword [esp], eax
mov edi, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fa62
mov eax, dword [esp]
lea eax, [esi + eax + 2]
mov dword [esp], eax
jmp 0x40fa53
xor eax, eax
mov ecx, 1
sub eax, dword [esp]
sub ecx, eax
mov dword [esp], ecx
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x40fa44
jmp 0x40faad
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x40fb5b
mov ecx, 0x3b918c99
sub ecx, esi
lea eax, [ecx + eax - 0x3b918c97]
mov dword [esp], eax
jmp 0x40fa98
xor eax, eax
mov ecx, 1
sub eax, dword [esp]
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fa89
push 2
push 0
push 0
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x70]
push esi
push dword [esp + 0x24]
call dword [0x4200f8]
mov esi, eax
call fcn.00418db0
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fb0c
xor ecx, ecx
lea eax, [esi + 2]
sub ecx, dword [esp]
sub ecx, eax
neg ecx
mov dword [esp], ecx
jmp 0x40fafa
inc dword [esp]
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x40faf7
jmp 0x40fce9
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x40fbbf
mov ecx, 2
neg eax
sub ecx, esi
sub eax, ecx
neg eax
mov dword [esp], eax
jmp 0x40fb41
xor eax, eax
mov ecx, 1
sub eax, dword [esp]
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fb32
jmp 0x40fce9
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp]
je 0x40fc10
add ecx, 2
lea eax, [esi + 3]
imul eax, ecx
mov dword [esp], eax
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
jne 0x40faad
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
je 0x40fba9
dec eax
jmp 0x40fbaa
inc eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
je 0x40fb87
jmp 0x40faad
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp]
je 0x40fc7a
add ecx, 2
lea eax, [esi + 3]
imul eax, ecx
jmp 0x40fbdb
dec eax
mov dword [esp], eax
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
jne 0x40fce9
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40fbda
inc eax
jmp 0x40fbdb
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40faad
mov eax, dword [esp]
lea ecx, [esi + 0x17]
add eax, 0xb
cdq
idiv ecx
jmp 0x40fc3c
inc eax
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40faad
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40fc3b
dec eax
jmp 0x40fc3c
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40fce9
mov eax, dword [esp]
lea ecx, [esi + 0x17]
add eax, 0xb
cdq
idiv ecx
jmp 0x40fca2
dec eax
mov dword [esp], eax
jmp 0x40fcb3
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40fce9
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40fca7
jmp 0x40fca1
test esi, esi
je 0x40fd50
lea eax, [esp + 4]
push eax
push 0x38
lea eax, [esp + 0x20]
push eax
push 0
push dword [esp + 0x20]
call dword [0x42006c]
mov esi, eax
call fcn.00418db0
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fd57
mov eax, 0xfffffffe
sub eax, esi
sub dword [esp], eax
jmp 0x40fd3f
xor eax, eax
mov ecx, 1
sub eax, dword [esp]
sub ecx, eax
mov dword [esp], ecx
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x40fd30
jmp 0x40fe61
xor esi, esi
jmp 0x410717
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
mov eax, dword [esp]
je 0x40fd8d
sub eax, esi
add eax, 2
mov dword [esp], eax
jmp 0x40fd73
inc dword [esp]
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40fd70
jmp 0x40fe61
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp]
je 0x40fde9
mov eax, esi
mov edx, 3
add ecx, 2
neg eax
sub edx, eax
imul edx, ecx
mov dword [esp], edx
jmp 0x40fdb3
dec eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x40fe61
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40fdaf
inc eax
mov dword [esp], eax
jmp 0x40fdb3
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40fe61
xor ecx, ecx
mov eax, 0xb
sub ecx, dword [esp]
sub eax, ecx
lea ecx, [esi + 0x17]
cdq
idiv ecx
jmp 0x40fe1a
neg eax
not eax
mov dword [esp], eax
jmp 0x40fe2b
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40fe61
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40fe1f
jmp 0x40fe16
test esi, esi
sets al
cmp dword [esp + 0x3c], 0
sete cl
xor esi, esi
test cl, al
jne 0x41059a
xor al, cl
jne 0x41059a
mov eax, dword [esp + 0x40]
mov dword [esp + 0x50], ebx
add eax, 2
mov dword [esp + 4], eax
push 0
push eax
call fcn.0040ac80
add esp, 8
mov ecx, eax
lea eax, [esp + 4]
push eax
push dword [esp + 8]
mov dword [esp + 0x10], ecx
push ecx
push 2
push dword [esp + 0x20]
call dword [0x42006c]
mov ebx, eax
call fcn.00418db0
mov dword [esp], eax
mov ecx, dword [esp]
mov dword [esp + 0x14], ebx
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40ff14
xor eax, eax
neg ebx
mov ecx, 2
sub eax, dword [esp]
sub ecx, ebx
sub ecx, eax
mov dword [esp], ecx
mov eax, dword [esp]
mov ebx, dword [esp + 0x50]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
jne 0x41005b
inc dword [esp]
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x40ff00
jmp 0x41005b
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x40ff7c
mov ecx, 2
neg eax
sub ecx, dword [esp + 0x14]
sub eax, ecx
neg eax
mov dword [esp], eax
mov ecx, dword [esp]
mov ebx, dword [esp + 0x50]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x41005b
xor eax, eax
mov ecx, 1
sub eax, dword [esp]
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x40ff53
jmp 0x41005b
not eax
mov ecx, dword [esp]
mov ebx, dword [esp + 0x50]
or eax, 0xfffffffc
cmp eax, 0xffffffff
mov eax, dword [esp + 0x14]
je 0x40ffe2
neg eax
mov edx, 3
add ecx, 2
sub edx, eax
imul edx, ecx
mov dword [esp], edx
jmp 0x40ffac
neg eax
not eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x41005b
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x40ffa5
inc eax
mov dword [esp], eax
jmp 0x40ffac
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x41005b
xor ecx, ecx
mov eax, 0xb
sub ecx, dword [esp]
sub eax, ecx
mov ecx, dword [esp + 0x14]
cdq
lea ecx, [ecx + 0x17]
idiv ecx
jmp 0x410014
dec eax
mov dword [esp], eax
jmp 0x410025
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp], ecx
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x41005b
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x410019
jmp 0x410013
cmp dword [esp + 0x14], 0
js 0x4100c2
mov ecx, dword [esp + 8]
movzx edi, word [ecx]
lea eax, [edi + edi*2]
cmp eax, 0x24
jne 0x4100cb
call fcn.00418db0
mov dword [esp], eax
mov edx, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x4100d1
mov eax, dword [esp]
lea eax, [edi + eax + 2]
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
jne 0x4101e8
inc dword [esp]
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x4100ae
jmp 0x4101e8
push dword [esp + 8]
jmp 0x410592
push ecx
jmp 0x410592
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x410113
mov ecx, 2
neg eax
sub ecx, edi
sub ecx, eax
mov dword [esp], ecx
jmp 0x4100f4
inc dword [esp]
mov ecx, dword [esp]
mov edx, 0x55555556
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x4100f1
jmp 0x4101e8
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp]
je 0x41016d
neg ecx
mov eax, 2
add edi, 3
sub eax, ecx
imul edi, eax
mov dword [esp], edi
jmp 0x410137
dec eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x4101e8
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x410133
inc eax
mov dword [esp], eax
jmp 0x410137
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x4101e8
mov eax, dword [esp]
add edi, 0x17
add eax, 0xb
cdq
idiv edi
mov edx, 0x55555556
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edx
jmp 0x4101b2
mov dword [esp], eax
mov edi, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x4101e8
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
je 0x4101e2
inc eax
jmp 0x4101a3
neg eax
not eax
jmp 0x4101a3
push 0xc2
lea eax, [esp + 0x80]
mov edi, eax
push edi
call fcn.00418e70
add esp, 8
mov eax, dword [esp + 8]
push dword [eax + 4]
push edi
call fcn.0040bb50
add esp, 8
mov edi, eax
push dword [esp + 8]
call fcn.004193e0
add esp, 4
test edi, edi
je 0x41059a
xor eax, eax
mov ecx, 2
sub eax, dword [esp + 0x3c]
sub ecx, eax
mov dword [esp + 4], ecx
push 0
push ecx
call fcn.0040ac80
add esp, 8
mov edi, eax
lea eax, [esp + 4]
push eax
push dword [esp + 8]
push edi
push 1
push dword [esp + 0x20]
call dword [0x42006c]
mov esi, eax
test esi, esi
js 0x4102bf
mov dword [esp + 8], edi
call fcn.00418db0
mov dword [esp], eax
mov edi, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x4102c6
xor ecx, ecx
neg esi
mov eax, 2
sub ecx, dword [esp]
sub eax, esi
sub ecx, eax
neg ecx
mov dword [esp], ecx
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
jne 0x4103c6
inc dword [esp]
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x4102aa
jmp 0x4103c6
xor eax, eax
jmp 0x41058e
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x410305
mov ecx, 2
neg eax
sub ecx, esi
sub eax, ecx
neg eax
mov dword [esp], eax
jmp 0x4102eb
inc dword [esp]
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x4102e8
jmp 0x4103c6
mov ecx, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410364
add ecx, 2
add esi, 3
imul esi, ecx
mov dword [esp], esi
jmp 0x410327
neg eax
not eax
mov dword [esp], eax
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
jne 0x4103c6
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x410320
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp], ecx
jmp 0x410327
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x4103c6
mov eax, dword [esp]
add esi, 0x17
add eax, 0xb
cdq
idiv esi
jmp 0x41038c
inc eax
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x4103c6
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x41038b
dec eax
jmp 0x41038c
push 0x5c
mov eax, dword [esp + 0xc]
push dword [eax + 4]
call fcn.00416350
add esp, 8
mov esi, eax
call fcn.00418db0
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x410425
mov eax, dword [esp]
lea eax, [esi + eax + 2]
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
jne 0x41052a
inc dword [esp]
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x410411
jmp 0x41052a
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
mov eax, dword [esp]
je 0x41045b
sub eax, esi
add eax, 2
mov dword [esp], eax
jmp 0x410441
inc dword [esp]
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x41043e
jmp 0x41052a
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
mov ecx, dword [esp]
je 0x4104b8
neg ecx
mov eax, 2
lea edx, [esi + 3]
sub eax, ecx
imul edx, eax
mov dword [esp], edx
jmp 0x410482
neg eax
not eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x41052a
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x41047b
inc eax
mov dword [esp], eax
jmp 0x410482
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x41052a
mov eax, dword [esp]
mov ecx, esi
mov edi, 0x17
neg ecx
sub edi, ecx
add eax, 0xb
cdq
idiv edi
mov edi, 0x55555556
jmp 0x4104ed
inc eax
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x41052a
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x4104ec
neg eax
not eax
jmp 0x4104ed
test esi, esi
je 0x41054e
add esi, 2
cmp dword [ebp + 0xc], 0
mov edi, dword [esp + 8]
je 0x410556
push dword [ebp + 8]
push esi
call fcn.0040bb50
add esp, 8
test eax, eax
setne al
jmp 0x41058e
mov edi, dword [esp + 8]
xor eax, eax
jmp 0x41058e
lea eax, [esp + 0x68]
push eax
push esi
call dword [0x420034]
test eax, eax
je 0x41056a
xor eax, eax
jmp 0x41058e
push dword [esp + 0x6c]
push dword [esp + 0x6c]
push dword [esp + 0x64]
push dword [ebp + 8]
call fcn.00410fc0
add esp, 0x10
xor edx, dword [esp + 0x74]
xor eax, dword [esp + 0x70]
or eax, edx
sete al
movzx esi, al
push edi
call fcn.004193e0
add esp, 4
mov edi, dword [esp + 0x10]
call fcn.00418db0
mov dword [esp], eax
mov edx, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x4105f4
xor eax, eax
add edi, 2
sub eax, dword [esp]
sub eax, edi
neg eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
jne 0x410708
inc dword [esp]
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x4105e0
jmp 0x410708
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
mov eax, dword [esp]
je 0x410638
mov ecx, 2
neg eax
sub ecx, edi
sub eax, ecx
neg eax
mov dword [esp], eax
jmp 0x410619
inc dword [esp]
mov ecx, dword [esp]
mov edx, 0x55555556
mov eax, ecx
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x410616
jmp 0x410708
mov ecx, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410690
add ecx, 2
add edi, 3
imul edi, ecx
mov dword [esp], edi
jmp 0x41065a
neg eax
not eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x410708
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x410653
inc eax
mov dword [esp], eax
jmp 0x41065a
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x410708
mov eax, dword [esp]
add edi, 0x17
add eax, 0xb
cdq
idiv edi
mov edx, 0x55555556
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edx
jmp 0x4106d5
mov dword [esp], eax
mov edi, 0x55555556
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x410708
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
je 0x410705
inc eax
jmp 0x4106c6
dec eax
jmp 0x4106c6
push dword [esp + 0x10]
call dword [0x4200cc]
mov edi, 0x55555556
call fcn.00418db0
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x41076a
mov eax, dword [esp + 0xc]
xor ecx, ecx
sub ecx, dword [esp]
add eax, 2
sub eax, ecx
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
jne 0x410872
inc dword [esp]
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffc
test eax, ecx
je 0x410756
jmp 0x410872
mov eax, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
mov eax, dword [esp]
je 0x4107aa
mov ecx, 2
neg eax
sub ecx, dword [esp + 0xc]
sub eax, ecx
neg eax
mov dword [esp], eax
jmp 0x410790
inc dword [esp]
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x41078d
jmp 0x410872
mov ecx, dword [esp]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410809
mov eax, dword [esp + 0xc]
mov edx, 3
add ecx, 2
neg eax
sub edx, eax
imul edx, ecx
mov dword [esp], edx
jmp 0x4107d3
dec eax
mov dword [esp], eax
mov eax, dword [esp]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x410872
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x4107cf
inc eax
mov dword [esp], eax
jmp 0x4107d3
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x410872
mov eax, dword [esp]
mov ecx, dword [esp + 0xc]
add eax, 0xb
add ecx, 0x17
cdq
idiv ecx
jmp 0x410835
inc eax
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, ecx
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x410872
mov ecx, dword [esp]
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp]
jne 0x410834
neg eax
not eax
jmp 0x410835
push dword [esp + 0xc]
call dword [0x4200cc]
mov eax, dword [esp + 0x54]
inc ebx
cmp ebx, dword [eax]
setb al
test esi, esi
sete cl
xor cl, al
jne 0x410a1a
test esi, esi
je 0x40f9c5
jmp 0x410a1a
push esi
call fcn.004193e0
add esp, 4
xor esi, esi
jmp 0x410a26
mov ecx, dword [esp + 0x7c]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410a30
add ecx, 2
lea eax, [ebx + 3]
imul eax, ecx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x7c]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
jne 0x40f631
mov esi, 0x66666667
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x7c]
je 0x410904
dec eax
jmp 0x410905
inc eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x7c]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
je 0x4108e5
jmp 0x40f631
mov ecx, dword [esp + 0x7c]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410ac1
imul eax, ecx, 0x43
add eax, 0x86
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x7c]
not eax
or eax, 0xfffffffe
cmp eax, 0xffffffff
jne 0x40f6d1
mov esi, 0x66666667
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x7c]
je 0x410974
dec eax
mov dword [esp + 0x7c], eax
jmp 0x410981
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp + 0x7c], ecx
mov eax, dword [esp + 0x7c]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
je 0x410951
jmp 0x40f6d1
mov ecx, dword [esp + 0x18]
not eax
or eax, 0xfffffffc
cmp eax, 0xffffffff
je 0x410b5d
neg ecx
mov eax, 2
mov edx, 3
sub eax, ecx
mov ecx, esi
neg ecx
sub edx, ecx
imul edx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
jne 0x40f799
mov esi, 0x66666667
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul esi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x18]
je 0x4109f9
dec eax
mov dword [esp + 0x18], eax
jmp 0x410a06
neg eax
mov ecx, 1
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0xfffffffe
test eax, ecx
je 0x4109d6
jmp 0x40f799
xor esi, esi
push dword [esp + 0x54]
call fcn.004193e0
add esp, 4
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40f631
mov eax, dword [esp + 0x7c]
lea ecx, [ebx + 0x17]
mov esi, 0x55555556
add eax, 0xb
cdq
idiv ecx
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40f631
mov edi, 0x66666667
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul edi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x7c]
je 0x410aa1
inc eax
jmp 0x410aa2
dec eax
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x410a82
jmp 0x40f631
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40f6d1
mov eax, dword [esp + 0x7c]
mov ecx, 0x2f149903
mov esi, 0x55555556
add eax, 0xb
imul ecx
mov eax, edx
sar edx, 4
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x7c], edx
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40f6d1
mov edi, 0x66666667
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul edi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x7c]
je 0x410b3d
inc eax
jmp 0x410b3e
dec eax
mov dword [esp + 0x7c], eax
mov ecx, dword [esp + 0x7c]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x410b1e
jmp 0x40f6d1
mov edx, 0x66666667
mov eax, ecx
imul edx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
je 0x40f799
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x93]
mov esi, 0x55555556
add eax, 0xb
cdq
idiv ecx
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
jne 0x40f799
mov edi, 0x66666667
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul edi
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*4]
cmp ecx, eax
mov eax, dword [esp + 0x18]
je 0x410bd2
inc eax
jmp 0x410bd3
dec eax
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
mov eax, ecx
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
cmp ecx, eax
je 0x410bb3
jmp 0x40f799