Function at 0x46a560
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x514332
mov eax, dword fs:[0]
push eax
sub esp, 0xd58
push ebx
push ebp
mov eax, dword [0x5566e0]
xor eax, esp
push eax
lea eax, [esp + 0xd64]
mov dword fs:[0], eax
mov ebp, dword [esp + 0xd74]
add ebp, 0x5130
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x50], 9
mov ebx, dword [ebp]
cmp dword [ebp - 4], ebx
jbe 0x46a5b1
call fcn.004e2423
mov eax, dword [ebp - 4]
cmp eax, dword [ebp]
mov dword [esp + 0x54], eax
jbe 0x46a5c2
call fcn.004e2423
lea eax, [ebp - 8]
test eax, eax
jne 0x46a5ce
call fcn.004e2423
cmp dword [esp + 0x54], ebx
je 0x46a619
mov ebp, dword [ebp]
mov ecx, dword [esp + 0x54]
mov edx, ebp
sub edx, ebx
sar edx, 4
shl edx, 4
add edx, ecx
cmp ebx, ebp
mov eax, ebx
je 0x46a611
sub ecx, ebx
nop
mov ebx, dword [eax]
mov dword [ecx + eax], ebx
mov ebx, dword [eax + 4]
mov dword [ecx + eax + 4], ebx
mov ebx, dword [eax + 8]
mov dword [ecx + eax + 8], ebx
mov ebx, dword [eax + 0xc]
mov dword [ecx + eax + 0xc], ebx
add eax, 0x10
cmp eax, ebp
jne 0x46a5f0
mov ecx, dword [esp + 0x4c]
mov dword [ecx], edx
mov ebp, ecx
add ebp, 0x10
sub dword [esp + 0x50], 1
mov dword [esp + 0x4c], ebp
jne 0x46a5a4
mov edx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x3c]
xor ebx, ebx
push ecx
lea edx, [esp + 0x98]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], edi
call fcn.00470b80
mov ebp, dword [esp + 0xd74]
lea edx, [esp + 0x34]
push edx
lea eax, [ebp + 0x5138]
mov dword [esp + 0xd70], ebx
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46a6a1
push eax
call fcn.004c1fcb
add esp, 4
mov eax, esi
cdq
sub eax, edx
mov ecx, eax
mov eax, edi
cdq
sub eax, edx
sar eax, 1
sar ecx, 1
mov dword [esp + 0x48], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x44], ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xfc], ecx
push eax
lea ecx, [esp + 0xd0]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x118]
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf8], ebx
mov dword [esp + 0x104], edi
mov dword [esp + 0x110], esi
mov dword [esp + 0x114], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
lea eax, [ebp + 0x5148]
mov dword [esp + 0xd70], 1
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46a77e
push eax
call fcn.004c1fcb
add esp, 4
mov eax, 0x55555556
imul esi
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x258], eax
lea edx, [esi + esi]
mov eax, 0x55555556
imul edx
mov eax, dword [esp + 0x50]
mov ebp, edx
mov dword [esp + 0x268], eax
mov dword [esp + 0x278], eax
mov dword [esp + 0x280], eax
shr ebp, 0x1f
add ebp, edx
lea edx, [edi + edi]
mov eax, 0x55555556
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x254], ecx
mov dword [esp + 0x25c], ecx
mov dword [esp + 0x284], ecx
mov dword [esp + 0x28c], ecx
mov dword [esp + 0x2b4], ecx
mov dword [esp + 0x2bc], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x290], edx
mov dword [esp + 0x2a0], edx
push ecx
lea edx, [esp + 0x250]
mov dword [esp + 0x64], eax
mov dword [esp + 0x28c], eax
mov dword [esp + 0x29c], eax
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x2b4], eax
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x2d4], eax
push edx
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x2e8]
mov dword [esp + 0x258], ebx
mov dword [esp + 0x25c], ebx
mov dword [esp + 0x26c], ebx
mov dword [esp + 0x84], ebp
mov dword [esp + 0x270], ebp
mov dword [esp + 0x278], ebp
mov dword [esp + 0x27c], ebx
mov dword [esp + 0x280], esi
mov dword [esp + 0x288], ebx
mov dword [esp + 0x2a0], ebp
mov dword [esp + 0x2a8], ebp
mov dword [esp + 0x2b0], esi
mov dword [esp + 0x2b8], ebx
mov dword [esp + 0x2c4], edi
mov dword [esp + 0x2d0], ebp
mov dword [esp + 0x2d4], edi
mov dword [esp + 0x2d8], ebp
mov dword [esp + 0x2e0], esi
mov dword [esp + 0x2e4], edi
call fcn.00470b80
mov eax, dword [esp + 0xd74]
lea ecx, [esp + 0x34]
push ecx
add eax, 0x5178
mov dword [esp + 0xd70], 2
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46a92e
push eax
call fcn.004c1fcb
add esp, 4
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x188], ecx
mov dword [esp + 0x190], ecx
mov ecx, dword [esp + 0x74]
push edx
mov dword [esp + 0x17c], eax
mov dword [esp + 0x19c], eax
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1c4], eax
lea eax, [esp + 0x170]
mov dword [esp + 0x1a8], ecx
mov dword [esp + 0x1b0], ecx
push eax
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x1d8]
mov dword [esp + 0x178], ebx
mov dword [esp + 0x17c], ebx
mov dword [esp + 0x180], ebp
mov dword [esp + 0x188], ebp
mov dword [esp + 0x18c], ebx
mov dword [esp + 0x190], esi
mov dword [esp + 0x198], ebp
mov dword [esp + 0x1a0], esi
mov dword [esp + 0x1a8], ebx
mov dword [esp + 0x1b4], edi
mov dword [esp + 0x1c0], ebp
mov dword [esp + 0x1c4], edi
mov dword [esp + 0x1c8], ebp
mov dword [esp + 0x1d0], esi
mov dword [esp + 0x1d4], edi
call fcn.00470b80
mov eax, dword [esp + 0xd74]
lea edx, [esp + 0x34]
push edx
add eax, 0x5158
mov dword [esp + 0xd70], 3
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46aa3d
push eax
call fcn.004c1fcb
add esp, 4
lea eax, [esi + esi*2]
cdq
and edx, 3
add eax, edx
mov ecx, eax
lea eax, [edi + edi*2]
cdq
and edx, 3
add eax, edx
mov ebp, eax
mov eax, edi
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x54], eax
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1f0], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x200], eax
mov eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
sar ecx, 2
sar ebp, 2
mov dword [esp + 0x2c], eax
mov dword [esp + 0x214], eax
mov dword [esp + 0x21c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x224], eax
mov dword [esp + 0x22c], eax
mov dword [esp + 0x10], ebp
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1d4], ecx
mov dword [esp + 0x1dc], ecx
mov dword [esp + 0x1ec], ecx
mov dword [esp + 0x1fc], ecx
mov dword [esp + 0x234], ecx
mov dword [esp + 0x23c], ecx
push eax
lea ecx, [esp + 0x1d0]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x258]
mov dword [esp + 0x1d8], ebx
mov dword [esp + 0x1dc], ebx
mov dword [esp + 0x1e4], ebp
mov dword [esp + 0x1ec], ebx
mov dword [esp + 0x1f0], esi
mov dword [esp + 0x200], esi
mov dword [esp + 0x210], esi
mov dword [esp + 0x214], ebp
mov dword [esp + 0x218], ebx
mov dword [esp + 0x21c], ebp
mov dword [esp + 0x224], edi
mov dword [esp + 0x22c], ebp
mov dword [esp + 0x234], edi
mov dword [esp + 0x23c], ebp
mov dword [esp + 0x244], edi
mov dword [esp + 0x24c], ebp
mov dword [esp + 0x250], esi
mov dword [esp + 0x254], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x5168
mov dword [esp + 0xd70], 4
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46abc2
push eax
call fcn.004c1fcb
add esp, 4
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x2e8], ecx
mov dword [esp + 0x2f8], ecx
mov dword [esp + 0x300], ecx
mov dword [esp + 0x310], ecx
mov dword [esp + 0x320], ecx
mov dword [esp + 0x330], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x304], edx
mov dword [esp + 0x30c], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x344], ecx
mov dword [esp + 0x34c], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x324], edx
mov dword [esp + 0x32c], edx
mov dword [esp + 0x364], edx
mov dword [esp + 0x36c], edx
push ecx
lea edx, [esp + 0x2e0]
mov dword [esp + 0x2e8], eax
mov dword [esp + 0x2f0], eax
mov dword [esp + 0x318], eax
mov dword [esp + 0x320], eax
mov dword [esp + 0x358], eax
mov dword [esp + 0x360], eax
push edx
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x388]
mov dword [esp + 0x2e8], ebx
mov dword [esp + 0x2ec], ebx
mov dword [esp + 0x2fc], ebx
mov dword [esp + 0x300], esi
mov dword [esp + 0x308], ebx
mov dword [esp + 0x314], ebp
mov dword [esp + 0x324], ebp
mov dword [esp + 0x334], ebp
mov dword [esp + 0x340], esi
mov dword [esp + 0x344], ebp
mov dword [esp + 0x348], ebx
mov dword [esp + 0x34c], ebp
mov dword [esp + 0x354], edi
mov dword [esp + 0x35c], ebp
mov dword [esp + 0x364], edi
mov dword [esp + 0x36c], ebp
mov dword [esp + 0x374], edi
mov dword [esp + 0x37c], ebp
mov dword [esp + 0x380], esi
mov dword [esp + 0x384], edi
call fcn.00470b80
mov eax, dword [esp + 0xd74]
lea ecx, [esp + 0x34]
push ecx
add eax, 0x5188
mov dword [esp + 0xd70], 5
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46ad49
push eax
call fcn.004c1fcb
add esp, 4
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x448], ecx
mov dword [esp + 0x458], ecx
mov dword [esp + 0x468], ecx
mov dword [esp + 0x478], ecx
mov dword [esp + 0x480], ecx
mov dword [esp + 0x490], ecx
mov dword [esp + 0x4a0], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x444], edx
mov dword [esp + 0x44c], edx
mov dword [esp + 0x484], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x454], eax
mov dword [esp + 0x45c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x4a8], ecx
mov dword [esp + 0x4b0], ecx
mov dword [esp + 0x4c0], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x488], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x464], eax
mov dword [esp + 0x46c], eax
mov dword [esp + 0x494], eax
mov dword [esp + 0x49c], eax
mov dword [esp + 0x4bc], eax
mov dword [esp + 0x4f4], eax
mov dword [esp + 0x4fc], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x4e4], ecx
mov dword [esp + 0x4ec], ecx
push eax
mov dword [esp + 0x490], edx
mov dword [esp + 0x4b8], edx
mov dword [esp + 0x4d8], edx
mov dword [esp + 0x4e0], edx
lea ecx, [esp + 0x440]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x518]
mov dword [esp + 0x448], ebx
mov dword [esp + 0x44c], ebx
mov dword [esp + 0x45c], ebx
mov dword [esp + 0x46c], ebx
mov dword [esp + 0x47c], ebx
mov dword [esp + 0x480], esi
mov dword [esp + 0x488], ebx
mov dword [esp + 0x4a4], ebp
mov dword [esp + 0x4b0], esi
mov dword [esp + 0x4b8], ebx
mov dword [esp + 0x4c4], ebp
mov dword [esp + 0x4d0], esi
mov dword [esp + 0x4d4], ebp
mov dword [esp + 0x4d8], ebx
mov dword [esp + 0x4dc], ebp
mov dword [esp + 0x4e4], edi
mov dword [esp + 0x4ec], ebp
mov dword [esp + 0x4f4], edi
mov dword [esp + 0x4fc], ebp
mov dword [esp + 0x504], edi
mov dword [esp + 0x50c], ebp
mov dword [esp + 0x510], esi
mov dword [esp + 0x514], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x5198
mov dword [esp + 0xd70], 6
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46af30
push eax
call fcn.004c1fcb
add esp, 4
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x514], edx
mov dword [esp + 0x51c], edx
mov dword [esp + 0x554], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x558], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x55c], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x564], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x518], ecx
mov dword [esp + 0x528], ecx
mov dword [esp + 0x538], ecx
mov dword [esp + 0x548], ecx
mov dword [esp + 0x550], ecx
mov dword [esp + 0x560], ecx
mov dword [esp + 0x568], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x570], ecx
mov dword [esp + 0x580], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x524], eax
mov dword [esp + 0x52c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x56c], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x594], ecx
mov dword [esp + 0x59c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x534], eax
mov dword [esp + 0x53c], eax
mov dword [esp + 0x574], eax
mov dword [esp + 0x57c], eax
mov dword [esp + 0x5b4], eax
mov dword [esp + 0x5bc], eax
mov dword [esp + 0x5f4], eax
mov dword [esp + 0x5fc], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x578], edx
mov dword [esp + 0x588], edx
mov dword [esp + 0x590], edx
mov dword [esp + 0x5a0], edx
mov dword [esp + 0x5a4], ecx
mov dword [esp + 0x5ac], ecx
mov dword [esp + 0x5b0], edx
mov dword [esp + 0x5c0], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x5e4], ecx
mov dword [esp + 0x5ec], ecx
push eax
lea ecx, [esp + 0x510]
mov dword [esp + 0x510], ebx
mov dword [esp + 0x514], ebx
mov dword [esp + 0x524], ebx
mov dword [esp + 0x534], ebx
mov dword [esp + 0x544], ebx
mov dword [esp + 0x548], esi
mov dword [esp + 0x550], ebx
mov dword [esp + 0x588], esi
mov dword [esp + 0x590], ebx
mov dword [esp + 0x59c], ebp
mov dword [esp + 0x5ac], ebp
mov dword [esp + 0x5bc], ebp
mov dword [esp + 0x5c8], esi
mov dword [esp + 0x5cc], ebp
mov dword [esp + 0x5d0], ebx
mov dword [esp + 0x5d4], ebp
mov dword [esp + 0x5d8], edx
mov dword [esp + 0x5dc], edi
mov dword [esp + 0x5e0], edx
mov dword [esp + 0x5e4], ebp
mov dword [esp + 0x5ec], edi
mov dword [esp + 0x5f4], ebp
mov dword [esp + 0x5fc], edi
mov dword [esp + 0x604], ebp
mov dword [esp + 0x608], esi
mov dword [esp + 0x60c], edi
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x618]
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x51a8
mov dword [esp + 0xd70], 7
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46b17f
push eax
call fcn.004c1fcb
add esp, 4
mov eax, 0x66666667
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul edi
sar edx, 1
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
mov eax, 0x66666667
lea edx, [esi + esi]
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x764], eax
mov dword [esp + 0x76c], eax
mov eax, 0x66666667
lea edx, [esi + esi*2]
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x774], eax
mov dword [esp + 0x77c], eax
lea edx, [esi*4]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x784], eax
mov dword [esp + 0x78c], eax
mov eax, 0x66666667
lea edx, [edi + edi]
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x7b4], edx
mov dword [esp + 0x7bc], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x74c], ebx
mov dword [esp + 0x750], ebx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x754], ecx
mov dword [esp + 0x758], ebp
mov dword [esp + 0x75c], ecx
mov dword [esp + 0x760], ebx
mov dword [esp + 0x768], ebp
mov dword [esp + 0x770], ebx
mov dword [esp + 0x778], ebp
mov dword [esp + 0x780], ebx
mov dword [esp + 0x788], ebp
mov dword [esp + 0x790], ebx
mov dword [esp + 0x794], esi
mov dword [esp + 0x798], ebp
mov dword [esp + 0x79c], ebx
mov dword [esp + 0x7a0], ebp
mov dword [esp + 0x7a4], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x7a8], eax
mov dword [esp + 0x7ac], ecx
mov dword [esp + 0x7b0], ebp
mov dword [esp + 0x7b8], eax
mov dword [esp + 0x7c0], ebp
mov dword [esp + 0x7c4], edx
mov dword [esp + 0x7c8], eax
mov dword [esp + 0x7cc], edx
mov dword [esp + 0x7d0], ebp
mov edx, dword [esp + 0x24]
mov dword [esp + 0x7d4], edx
mov dword [esp + 0x7dc], edx
mov dword [esp + 0x7d8], eax
mov dword [esp + 0x7e8], eax
mov dword [esp + 0x7f0], eax
mov eax, 0x66666667
lea edx, [edi + edi*2]
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x800], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x804], edx
mov dword [esp + 0x80c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x810], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x814], edx
mov dword [esp + 0x81c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x820], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x824], edx
mov dword [esp + 0x82c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x830], edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x7f8], eax
mov dword [esp + 0x808], eax
mov dword [esp + 0x818], eax
mov dword [esp + 0x828], eax
mov dword [esp + 0x838], eax
mov dword [esp + 0x840], eax
lea edx, [edi*4]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x850], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x854], edx
mov dword [esp + 0x85c], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x860], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x864], edx
mov dword [esp + 0x86c], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x870], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x874], edx
mov dword [esp + 0x87c], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x7e0], ebp
mov dword [esp + 0x7e4], esi
mov dword [esp + 0x7ec], ebx
mov dword [esp + 0x7f4], ecx
mov dword [esp + 0x7fc], ecx
mov dword [esp + 0x834], esi
mov dword [esp + 0x83c], ebx
mov dword [esp + 0x844], ecx
mov dword [esp + 0x58], eax
mov dword [esp + 0x848], eax
mov dword [esp + 0x84c], ecx
mov dword [esp + 0x858], eax
mov dword [esp + 0x868], eax
mov dword [esp + 0x878], eax
mov dword [esp + 0x880], edx
mov dword [esp + 0x884], esi
mov dword [esp + 0x888], eax
mov dword [esp + 0x88c], ebx
mov dword [esp + 0x890], eax
mov dword [esp + 0x894], ecx
mov dword [esp + 0x898], edi
mov dword [esp + 0x89c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x8a4], ecx
mov dword [esp + 0x8ac], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x8b4], ecx
mov dword [esp + 0x8bc], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x8a0], eax
mov dword [esp + 0x8b0], eax
mov dword [esp + 0x8c0], eax
mov dword [esp + 0x8d0], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x8c4], ecx
mov dword [esp + 0x8cc], ecx
push eax
lea ecx, [esp + 0x750]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x8e8]
mov dword [esp + 0x8b4], edi
mov dword [esp + 0x8c4], edi
mov dword [esp + 0x8d4], edi
mov dword [esp + 0x8e0], esi
mov dword [esp + 0x8e4], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x51b8
mov dword [esp + 0xd70], 8
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46b59c
push eax
call fcn.004c1fcb
add esp, 4
mov eax, 0x2aaaaaab
imul esi
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x2aaaaaab
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0xb18], eax
mov eax, 0x2aaaaaab
lea edx, [esi + esi]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x6c], eax
mov dword [esp + 0xb24], eax
mov dword [esp + 0xb2c], eax
mov dword [esp + 0xb28], edx
mov eax, 0x2aaaaaab
lea edx, [esi + esi*2]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x5c], eax
mov dword [esp + 0xb34], eax
mov dword [esp + 0xb3c], eax
mov dword [esp + 0xb38], edx
mov eax, 0x2aaaaaab
lea edx, [esi*4]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x70], eax
mov dword [esp + 0xb44], eax
mov dword [esp + 0xb4c], eax
mov dword [esp + 0xb48], edx
lea edx, [esi + esi*4]
mov eax, 0x2aaaaaab
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x64], eax
mov dword [esp + 0xb54], eax
mov dword [esp + 0xb5c], eax
mov dword [esp + 0xb58], edx
mov dword [esp + 0xb68], edx
mov dword [esp + 0xb70], edx
mov eax, 0x2aaaaaab
lea edx, [edi + edi]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xb0c], ebx
mov dword [esp + 0xb10], ebx
mov dword [esp + 0xb14], ecx
mov dword [esp + 0xb1c], ecx
mov dword [esp + 0xb20], ebx
mov dword [esp + 0xb30], ebx
mov dword [esp + 0xb40], ebx
mov dword [esp + 0xb50], ebx
mov dword [esp + 0xb60], ebx
mov dword [esp + 0xb64], esi
mov dword [esp + 0xb6c], ebx
mov dword [esp + 0xb74], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0xb78], eax
mov dword [esp + 0xb7c], ecx
mov dword [esp + 0xb80], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xb84], edx
mov dword [esp + 0xb8c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xb90], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xb94], edx
mov dword [esp + 0xb9c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xba0], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0xba4], edx
mov dword [esp + 0xbac], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xbb0], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0xbb4], edx
mov dword [esp + 0xbbc], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xbc0], edx
mov dword [esp + 0xb88], eax
mov dword [esp + 0xb98], eax
mov dword [esp + 0xba8], eax
mov dword [esp + 0xbb8], eax
mov dword [esp + 0xbc8], eax
mov dword [esp + 0xbd0], eax
mov eax, 0x2aaaaaab
lea edx, [edi + edi*2]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xbe0], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xbe4], edx
mov dword [esp + 0xbec], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xbf0], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xbf4], edx
mov dword [esp + 0xbfc], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xc00], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0xc04], edx
mov dword [esp + 0xc0c], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xc10], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0xc14], edx
mov dword [esp + 0xc1c], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov dword [esp + 0xbd8], eax
mov dword [esp + 0xbe8], eax
mov dword [esp + 0xbf8], eax
mov dword [esp + 0xc08], eax
mov dword [esp + 0xc18], eax
mov dword [esp + 0xc28], eax
mov dword [esp + 0xc30], eax
mov dword [esp + 0xc20], edx
mov eax, 0x2aaaaaab
lea edx, [edi*4]
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc40], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xbc4], esi
mov dword [esp + 0xbcc], ebx
mov dword [esp + 0xbd4], ecx
mov dword [esp + 0xbdc], ecx
mov dword [esp + 0xc24], esi
mov dword [esp + 0xc2c], ebx
mov dword [esp + 0xc34], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0xc38], eax
mov dword [esp + 0xc3c], ecx
mov dword [esp + 0xc44], edx
mov dword [esp + 0xc4c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc50], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xc54], edx
mov dword [esp + 0xc5c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc60], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0xc64], edx
mov dword [esp + 0xc6c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc70], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0xc74], edx
mov dword [esp + 0xc7c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc80], edx
mov dword [esp + 0xc48], eax
mov dword [esp + 0xc58], eax
mov dword [esp + 0xc68], eax
mov dword [esp + 0xc78], eax
mov dword [esp + 0xc88], eax
mov dword [esp + 0xc90], eax
lea edx, [edi + edi*4]
mov eax, 0x2aaaaaab
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xca0], edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xca4], edx
mov dword [esp + 0xcac], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xcb0], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xcb4], edx
mov dword [esp + 0xcbc], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xcc0], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0xcc4], edx
mov dword [esp + 0xccc], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xc94], ecx
mov dword [esp + 0xc9c], ecx
mov dword [esp + 0xcf4], ecx
mov dword [esp + 0xcfc], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xcd0], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0xd04], ecx
mov dword [esp + 0xd0c], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0xcd4], edx
mov dword [esp + 0xcdc], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0xd14], ecx
mov dword [esp + 0xd1c], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0xc84], esi
mov dword [esp + 0xc8c], ebx
mov dword [esp + 0xc98], eax
mov dword [esp + 0xca8], eax
mov dword [esp + 0xcb8], eax
mov dword [esp + 0xcc8], eax
mov dword [esp + 0xcd8], eax
mov dword [esp + 0xce0], edx
mov dword [esp + 0xce4], esi
mov dword [esp + 0xce8], eax
mov dword [esp + 0xcec], ebx
mov dword [esp + 0xcf0], eax
mov dword [esp + 0xcf8], edi
mov dword [esp + 0xd00], eax
mov dword [esp + 0xd08], edi
mov dword [esp + 0xd10], eax
mov dword [esp + 0xd18], edi
mov dword [esp + 0xd20], eax
mov dword [esp + 0xd24], ecx
mov dword [esp + 0xd2c], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0xd30], eax
mov dword [esp + 0xd40], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xd34], ecx
mov dword [esp + 0xd3c], ecx
push eax
lea ecx, [esp + 0xb10]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0xd58]
mov dword [esp + 0xd34], edi
mov dword [esp + 0xd44], edi
mov dword [esp + 0xd50], esi
mov dword [esp + 0xd54], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x51c8
mov dword [esp + 0xd70], 9
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46bb63
push eax
call fcn.004c1fcb
add esp, 4
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x98], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x90]
mov dword [esp + 0x98], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xc0], eax
push edx
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0xd8]
mov dword [esp + 0x98], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], esi
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xc4], edi
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], edi
call fcn.00470b80
mov eax, dword [esp + 0xd74]
lea ecx, [esp + 0x34]
push ecx
add eax, 0x51d8
mov dword [esp + 0xd70], 0xa
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46bc36
push eax
call fcn.004c1fcb
add esp, 4
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x124], edx
mov dword [esp + 0x12c], edx
mov dword [esp + 0x154], edx
mov dword [esp + 0x15c], edx
mov edx, dword [esp + 0x10]
push edx
mov dword [esp + 0x11c], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x13c], eax
mov dword [esp + 0x144], eax
mov dword [esp + 0x154], eax
mov dword [esp + 0x164], eax
lea eax, [esp + 0x110]
mov dword [esp + 0x118], ecx
mov dword [esp + 0x120], ecx
mov dword [esp + 0x148], ecx
mov dword [esp + 0x150], ecx
push eax
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x178]
mov dword [esp + 0x118], ebx
mov dword [esp + 0x11c], ebx
mov dword [esp + 0x12c], ebx
mov dword [esp + 0x13c], ebx
mov dword [esp + 0x140], esi
mov dword [esp + 0x148], ebx
mov dword [esp + 0x154], edi
mov dword [esp + 0x164], edi
mov dword [esp + 0x170], esi
mov dword [esp + 0x174], edi
call fcn.00470b80
mov eax, dword [esp + 0xd74]
lea edx, [esp + 0x34]
push edx
add eax, 0x51e8
mov dword [esp + 0xd70], 0xb
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46bd45
push eax
call fcn.004c1fcb
add esp, 4
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x384], eax
mov dword [esp + 0x38c], eax
lea eax, [esi + esi]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x3a4], edx
mov dword [esp + 0x3ac], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x3c4], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x3c8], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x3cc], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x3d8], edx
mov edx, dword [esp + 0x20]
sar eax, 2
mov dword [esp + 0x3e4], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x3e8], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x394], eax
mov dword [esp + 0x39c], eax
mov dword [esp + 0x3d4], eax
mov dword [esp + 0x3dc], eax
mov dword [esp + 0x414], eax
mov dword [esp + 0x41c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x388], ecx
mov dword [esp + 0x398], ecx
mov dword [esp + 0x3a8], ecx
mov dword [esp + 0x3b8], ecx
mov dword [esp + 0x3c0], ecx
mov dword [esp + 0x3d0], ecx
mov dword [esp + 0x3e0], ecx
mov dword [esp + 0x3f0], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x3ec], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x424], eax
mov dword [esp + 0x42c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x3f8], ecx
mov dword [esp + 0x400], ecx
mov dword [esp + 0x410], ecx
mov dword [esp + 0x420], ecx
mov dword [esp + 0x430], ecx
push eax
mov dword [esp + 0x408], edx
mov dword [esp + 0x410], edx
lea ecx, [esp + 0x380]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x448]
mov dword [esp + 0x388], ebx
mov dword [esp + 0x38c], ebx
mov dword [esp + 0x39c], ebx
mov dword [esp + 0x3ac], ebx
mov dword [esp + 0x3bc], ebx
mov dword [esp + 0x3c0], esi
mov dword [esp + 0x3c8], ebx
mov dword [esp + 0x400], esi
mov dword [esp + 0x408], ebx
mov dword [esp + 0x414], edi
mov dword [esp + 0x424], edi
mov dword [esp + 0x434], edi
mov dword [esp + 0x440], esi
mov dword [esp + 0x444], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x51f8
mov dword [esp + 0xd70], 0xc
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46bf30
push eax
call fcn.004c1fcb
add esp, 4
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x624], edx
mov dword [esp + 0x62c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x634], edx
mov dword [esp + 0x63c], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x644], edx
mov dword [esp + 0x64c], edx
mov dword [esp + 0x614], eax
mov dword [esp + 0x61c], eax
mov dword [esp + 0x664], eax
lea eax, [edi + edi]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x618], ecx
mov dword [esp + 0x628], ecx
mov dword [esp + 0x638], ecx
mov dword [esp + 0x648], ecx
mov dword [esp + 0x658], ecx
mov dword [esp + 0x660], ecx
mov dword [esp + 0x66c], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x670], ecx
mov dword [esp + 0x680], ecx
mov dword [esp + 0x690], ecx
mov dword [esp + 0x6a0], ecx
mov ecx, dword [esp + 0x4c]
sar eax, 2
mov dword [esp + 0x674], edx
mov dword [esp + 0x67c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x6b4], ecx
mov dword [esp + 0x6bc], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x684], edx
mov dword [esp + 0x68c], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x6c4], ecx
mov dword [esp + 0x6cc], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x694], edx
mov dword [esp + 0x69c], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x6d4], ecx
mov dword [esp + 0x6dc], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x60c], ebx
mov dword [esp + 0x610], ebx
mov dword [esp + 0x620], ebx
mov dword [esp + 0x630], ebx
mov dword [esp + 0x640], ebx
mov dword [esp + 0x650], ebx
mov dword [esp + 0x654], esi
mov dword [esp + 0x65c], ebx
mov dword [esp + 0x668], eax
mov dword [esp + 0x678], eax
mov dword [esp + 0x688], eax
mov dword [esp + 0x698], eax
mov dword [esp + 0x6a4], esi
mov dword [esp + 0x6a8], eax
mov dword [esp + 0x6ac], ebx
mov dword [esp + 0x6b0], eax
mov dword [esp + 0x6b8], edx
mov dword [esp + 0x6c0], eax
mov dword [esp + 0x6c8], edx
mov dword [esp + 0x6d0], eax
mov dword [esp + 0x6d8], edx
mov dword [esp + 0x6e0], eax
mov dword [esp + 0x6e4], ecx
mov dword [esp + 0x6e8], edx
mov dword [esp + 0x6ec], ecx
mov dword [esp + 0x6f0], eax
mov dword [esp + 0x6f4], esi
mov dword [esp + 0x6f8], edx
mov dword [esp + 0x6fc], ebx
mov dword [esp + 0x700], edx
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x704], eax
mov dword [esp + 0x70c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x714], eax
mov dword [esp + 0x71c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x724], eax
mov dword [esp + 0x72c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x734], ecx
mov dword [esp + 0x73c], ecx
push eax
mov dword [esp + 0x714], edx
mov dword [esp + 0x724], edx
mov dword [esp + 0x734], edx
mov dword [esp + 0x744], edx
lea ecx, [esp + 0x610]
push ecx
lea edx, [esp + 0x3c]
push edx
lea edx, [esp + 0x758]
mov dword [esp + 0x714], edi
mov dword [esp + 0x724], edi
mov dword [esp + 0x734], edi
mov dword [esp + 0x744], edi
mov dword [esp + 0x750], esi
mov dword [esp + 0x754], edi
call fcn.00470b80
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x5208
mov dword [esp + 0xd70], 0xd
call fcn.00470860
mov dword [esp + 0xd6c], 0xffffffff
mov eax, dword [esp + 0x38]
cmp eax, ebx
je 0x46c20b
push eax
call fcn.004c1fcb
add esp, 4
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x92492493
lea edx, [esi + esi]
imul edx
lea eax, [esi + esi]
add edx, eax
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x8f4], eax
mov dword [esp + 0x8fc], eax
mov eax, 0x92492493
lea edx, [esi + esi*2]
imul edx
lea eax, [esi + esi*2]
add edx, eax
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x904], eax
mov dword [esp + 0x90c], eax
mov eax, 0x92492493
lea edx, [esi*4]
imul edx
lea eax, [esi*4]
add edx, eax
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x914], eax
mov dword [esp + 0x91c], eax
mov eax, 0x92492493
lea edx, [esi + esi*4]
imul edx
lea eax, [esi + esi*4]
add edx, eax
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x924], eax
mov dword [esp + 0x92c], eax
lea edx, [esi + esi*2]
add edx, edx
mov dword [esp + 0x10], edx
mov eax, 0x92492493
imul edx
add edx, dword [esp + 0x10]
mov dword [esp + 0x8dc], ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x8e0], ebx
mov dword [esp + 0x8e4], ecx
mov dword [esp + 0x8e8], ebp
mov dword [esp + 0x8ec], ecx
mov dword [esp + 0x8f0], ebx
mov dword [esp + 0x8f8], ebp
mov dword [esp + 0x900], ebx
mov dword [esp + 0x908], ebp
mov dword [esp + 0x910], ebx
mov dword [esp + 0x918], ebp
mov dword [esp + 0x920], ebx
mov dword [esp + 0x928], ebp
mov dword [esp + 0x930], ebx
mov dword [esp + 0x934], eax
mov dword [esp + 0x938], ebp
mov edx, dword [esp + 0x28]
mov dword [esp + 0x958], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x964], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x968], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x96c], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x974], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x978], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x97c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x984], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x988], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x98c], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x994], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x998], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x99c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x9a8], edx
mov dword [esp + 0x9b8], edx
mov dword [esp + 0x9c0], edx
mov dword [esp + 0x9d0], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x9d4], edx
mov dword [esp + 0x9dc], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x9e0], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x9e4], edx
mov dword [esp + 0x9ec], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x9f0], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x9f4], edx
mov dword [esp + 0x9fc], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0xa00], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x948], ebp
mov dword [esp + 0x950], ebp
mov dword [esp + 0x960], ebp
mov dword [esp + 0x970], ebp
mov dword [esp + 0x980], ebp
mov dword [esp + 0x990], ebp
mov dword [esp + 0x9a0], ebp
mov dword [esp + 0x9b0], ebp
mov ebp, dword [esp + 0x68]
mov dword [esp + 0xa04], edx
mov dword [esp + 0xa0c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x93c], eax
mov dword [esp + 0x940], ebx
mov dword [esp + 0x944], esi
mov dword [esp + 0x94c], ebx
mov dword [esp + 0x954], ecx
mov dword [esp + 0x95c], ecx
mov dword [esp + 0x9a4], eax
mov dword [esp + 0x9ac], eax
mov dword [esp + 0x9b4], esi
mov dword [esp + 0x9bc], ebx
mov dword [esp + 0x9c4], ecx
mov dword [esp + 0x9c8], ebp
mov dword [esp + 0x9cc], ecx
mov dword [esp + 0x9d8], ebp
mov dword [esp + 0x9e8], ebp
mov dword [esp + 0x9f8], ebp
mov dword [esp + 0xa08], ebp
mov dword [esp + 0xa10], edx
mov dword [esp + 0xa14], eax
mov dword [esp + 0xa18], ebp
mov dword [esp + 0xa1c], eax
mov dword [esp + 0xa20], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa38], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0xa44], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa48], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 0xa4c], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0xa54], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa58], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0xa5c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xa64], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa68], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xa34], ecx
mov dword [esp + 0xa3c], ecx
mov dword [esp + 0xaa4], ecx
mov dword [esp + 0xaac], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xa6c], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xab4], ecx
mov dword [esp + 0xabc], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xa74], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xac4], ecx
mov dword [esp + 0xacc], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xa78], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xad4], ecx
mov dword [esp + 0xadc], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xa7c], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa84], eax
mov dword [esp + 0xa8c], eax
mov dword [esp + 0xaf4], eax
mov dword [esp + 0xafc], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xae4], ecx
mov dword [esp + 0xaec], ecx
push eax
lea ecx, [esp + 0x8e0]
mov dword [esp + 0xa8c], edx
mov dword [esp + 0xa9c], edx
mov dword [esp + 0xaa4], edx
mov dword [esp + 0xab4], edx
mov dword [esp + 0xac4], edx
mov dword [esp + 0xad4], edx
mov dword [esp + 0xae4], edx
mov dword [esp + 0xaf4], edx
mov dword [esp + 0xb04], edx
mov dword [esp + 0xa28], esi
mov dword [esp + 0xa2c], ebp
mov dword [esp + 0xa30], ebx
mov dword [esp + 0xa34], ebp
mov dword [esp + 0xa44], ebp
mov dword [esp + 0xa54], ebp
mov dword [esp + 0xa64], ebp
mov dword [esp + 0xa74], ebp
mov dword [esp + 0xa84], ebp
mov dword [esp + 0xa94], ebp
mov dword [esp + 0xa98], esi
mov dword [esp + 0xaa0], ebx
mov dword [esp + 0xaac], edi
mov dword [esp + 0xabc], edi
mov dword [esp + 0xacc], edi
mov dword [esp + 0xadc], edi
mov dword [esp + 0xaec], edi
mov dword [esp + 0xafc], edi
mov dword [esp + 0xb08], esi
mov dword [esp + 0xb0c], edi
push ecx
lea edx, [esp + 0xd58]
push edx
lea edx, [esp + 0xb18]
call fcn.00470b80
lea eax, [esp + 0xd50]
push eax
mov eax, dword [esp + 0xd78]
add eax, 0x5218
mov dword [esp + 0xd70], 0xe
call fcn.00470860
mov eax, dword [esp + 0xd54]
cmp eax, ebx
je 0x46c789
push eax
call fcn.004c1fcb
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0xd64]
mov dword fs:[0], ecx
pop ecx
pop ebp
pop ebx
add esp, 0xd64
ret 4