Function at 0x501ac0
Capabilities:
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x7765db
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xf0
push ebx
push ebp
mov ebp, ecx
lea eax, [ebp + 0xd0]
mov ebx, eax
test ebx, ebx
push esi
push edi
mov byte [esp + 0x34], 0
mov dword [esp + 0x30], ebx
je 0x501b0b
cmp byte [0x992082], 0
je 0x501b06
push ebx
call dword [0x794290]
mov byte [esp + 0x34], 1
mov esi, dword [ebp + 0x16c]
lea edi, [esi + 0x1bc]
xor al, al
test edi, edi
mov dword [esp + 0x108], 0
je 0x501b39
cmp byte [0x992082], al
je 0x501b37
push edi
call dword [0x794290]
mov al, 1
test al, al
je 0x501b4d
cmp byte [0x992082], 0
je 0x501b4d
push edi
call dword [0x79428c]
cmp dword [esi + 0xc], 0
jne 0x501b71
cmp byte [esp + 0x34], 0
je 0x50291e
cmp byte [0x992082], 0
je 0x50291e
push ebx
jmp 0x502918
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501b94
cmp byte [0x992082], al
je 0x501b92
push edi
call dword [0x794290]
mov al, 1
test al, al
je 0x501ba8
cmp byte [0x992082], 0
je 0x501ba8
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0xc]
lea eax, [ebp + 0x70]
cmp ecx, dword [eax + 4]
lea edx, [eax + 4]
jbe 0x501bc9
push 0x10
push ecx
lea ecx, [eax + 8]
push ecx
push eax
push edx
call fcn.0040e110
add esp, 0x14
jmp 0x501bcb
mov dword [eax], ecx
mov ebx, dword [ebp + 0x16c]
mov esi, dword [0x794290]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501bf0
cmp byte [0x992082], al
je 0x501bee
push edi
call esi
mov al, 1
test al, al
je 0x501c04
cmp byte [0x992082], 0
je 0x501c04
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0xc]
lea eax, [ebp + 0x7c]
cmp ecx, dword [eax + 4]
lea edx, [eax + 4]
jbe 0x501c25
push 0xc
push ecx
lea ecx, [eax + 8]
push ecx
push eax
push edx
call fcn.0040e110
add esp, 0x14
jmp 0x501c27
mov dword [eax], ecx
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501c46
cmp byte [0x992082], al
je 0x501c44
push edi
call esi
mov al, 1
test al, al
je 0x501c5a
cmp byte [0x992082], 0
je 0x501c5a
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0xc]
lea eax, [ebp + 0xac]
cmp ecx, dword [eax + 4]
lea edx, [eax + 4]
jbe 0x501c7e
push 4
push ecx
lea ecx, [eax + 8]
push ecx
push eax
push edx
call fcn.0040e110
add esp, 0x14
jmp 0x501c80
mov dword [eax], ecx
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501c9f
cmp byte [0x992082], al
je 0x501c9d
push edi
call esi
mov al, 1
test al, al
je 0x501cb3
cmp byte [0x992082], 0
je 0x501cb3
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0xc]
lea eax, [ebp + 0xb8]
cmp ecx, dword [eax + 4]
lea edx, [eax + 4]
jbe 0x501cd7
push 4
push ecx
lea ecx, [eax + 8]
push ecx
push eax
push edx
call fcn.0040e110
add esp, 0x14
jmp 0x501cd9
mov dword [eax], ecx
lea ecx, [esp + 0x58]
call fcn.005038f0
lea ecx, [esp + 0x3c]
call fcn.005038f0
lea ecx, [esp + 0x88]
call fcn.005038f0
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501d16
cmp byte [0x992082], al
je 0x501d14
push edi
call esi
mov al, 1
test al, al
je 0x501d2a
cmp byte [0x992082], 0
je 0x501d2a
push edi
call dword [0x79428c]
mov edx, dword [ebx + 0xc]
push edx
lea ecx, [esp + 0x5c]
call fcn.00503680
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501d56
cmp byte [0x992082], al
je 0x501d54
push edi
call esi
mov al, 1
test al, al
je 0x501d6a
cmp byte [0x992082], 0
je 0x501d6a
push edi
call dword [0x79428c]
mov eax, dword [ebx + 0xc]
push eax
lea ecx, [esp + 0x40]
call fcn.00503680
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501d96
cmp byte [0x992082], al
je 0x501d94
push edi
call esi
mov al, 1
test al, al
je 0x501daa
cmp byte [0x992082], 0
je 0x501daa
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0xc]
push ecx
lea ecx, [esp + 0x8c]
call fcn.00503680
mov ebx, dword [ebp + 0x1b0]
xor eax, eax
test ebx, ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], eax
jle 0x501e45
mov edi, edi
mov edx, dword [ebp + 0x1b8]
mov edi, dword [edx + eax*4]
mov ecx, edi
call fcn.004ef2a0
mov eax, dword [eax + 0xf8]
shr eax, 3
test al, 1
jne 0x501e3d
mov ecx, edi
call fcn.004ef2a0
add eax, 0x34
push eax
lea ecx, [esp + 0x5c]
call fcn.00503760
mov ecx, edi
call fcn.004ef2a0
add eax, 0x4c
push eax
lea ecx, [esp + 0x40]
call fcn.00503760
mov ecx, edi
call fcn.004ef2a0
add eax, 0x64
push eax
lea ecx, [esp + 0x8c]
call fcn.00503760
mov eax, dword [esp + 0x10]
add eax, 1
cmp eax, ebx
mov dword [esp + 0x10], eax
jl 0x501dd0
jmp 0x501e45
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
lea edi, [ebp + 0x2a0]
push edi
lea ecx, [esp + 0x5c]
call fcn.00503760
lea ebx, [ebp + 0x288]
push ebx
lea ecx, [esp + 0x5c]
call fcn.00503760
lea edx, [ebp + 0x210]
push edx
lea ecx, [esp + 0x5c]
call fcn.00503730
lea eax, [ebp + 0x228]
push eax
lea ecx, [esp + 0x74]
call fcn.00503910
lea ecx, [ebp + 0x240]
push ecx
lea ecx, [esp + 0x74]
call fcn.00503730
lea edx, [ebp + 0x258]
push edx
lea ecx, [esp + 0x74]
call fcn.00503730
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x40]
call fcn.00503730
push edi
lea ecx, [esp + 0x40]
call fcn.00503760
push ebx
lea ecx, [esp + 0x40]
call fcn.00503760
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
je 0x501ee6
cmp byte [0x992082], al
je 0x501ee4
push edi
call esi
mov al, 1
test al, al
je 0x501efa
cmp byte [0x992082], 0
je 0x501efa
push edi
call dword [0x79428c]
mov ecx, dword [ebx + 0x38]
mov ebx, dword [ebp + 0x16c]
mov esi, dword [esp + 0x110]
mov ecx, dword [ecx + esi*4]
lea edi, [ebx + 0x1bc]
xor al, al
test edi, edi
mov dword [esp + 0x14], ecx
je 0x501f32
cmp byte [0x992082], al
je 0x501f30
push edi
call dword [0x794290]
mov ecx, dword [esp + 0x14]
mov al, 1
test al, al
je 0x501f4a
cmp byte [0x992082], 0
je 0x501f4a
push edi
call dword [0x79428c]
mov ecx, dword [esp + 0x14]
mov edx, dword [ebx + 0x58]
mov esi, dword [edx + esi*4]
add esi, ecx
cmp ecx, esi
mov eax, ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], eax
jge 0x5020a8
cmp eax, 0xbf
ja 0x502099
mov ecx, eax
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [esp + ecx*4 + 0x58], edx
setne cl
test cl, cl
je 0x501ff7
mov esi, dword [ebp + 0x16c]
mov edi, eax
shl edi, 4
add edi, dword [ebp + 0x78]
lea ebx, [esi + 0x1bc]
xor cl, cl
test ebx, ebx
je 0x501fba
cmp byte [0x992082], cl
je 0x501fb8
push ebx
call dword [0x794290]
mov eax, dword [esp + 0x10]
mov cl, 1
test cl, cl
je 0x501fd2
cmp byte [0x992082], 0
je 0x501fd2
push ebx
call dword [0x79428c]
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x78]
push edi
lea ecx, [edx + eax*8]
call fcn.0050ec80
mov eax, dword [ebp + 0xb4]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
mov dword [eax + ecx*4], 0
mov eax, dword [esp + 0x10]
cmp eax, 0xbf
ja 0x502099
mov ecx, eax
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [esp + ecx*4 + 0x3c], edx
setne cl
test cl, cl
je 0x502099
mov ebx, dword [ebp + 0x16c]
lea edi, [ebx + 0x1bc]
xor cl, cl
test edi, edi
je 0x502045
cmp byte [0x992082], cl
je 0x502043
push edi
call dword [0x794290]
mov eax, dword [esp + 0x10]
mov cl, 1
test cl, cl
je 0x50205d
cmp byte [0x992082], 0
je 0x50205d
push edi
call dword [0x79428c]
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 0x84]
lea edx, [eax + eax*2]
mov eax, dword [ebx + 0x80]
add edx, edx
add edx, edx
add eax, edx
add ecx, edx
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov eax, dword [eax + 8]
mov dword [ecx + 8], eax
mov ecx, dword [ebp + 0xc0]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx*4], 0
mov eax, dword [esp + 0x10]
add eax, 1
cmp eax, esi
mov dword [esp + 0x10], eax
jl 0x501f64
lea ebx, [ebp + 0x288]
push ebx
lea ecx, [esp + 0x5c]
call fcn.00503730
lea edi, [ebp + 0x2a0]
push edi
lea ecx, [esp + 0x5c]
call fcn.00503730
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x40]
call fcn.00503760
push ebx
lea ecx, [esp + 0x40]
call fcn.00503730
push edi
lea ecx, [esp + 0x40]
call fcn.00503730
lea edi, [ebp + 0xd0]
xor al, al
test edi, edi
je 0x502107
cmp byte [0x992082], al
je 0x502105
push edi
call dword [0x794290]
mov al, 1
test al, al
mov bl, byte [ebp + 0x15c]
je 0x502121
cmp byte [0x992082], 0
je 0x502121
push edi
call dword [0x79428c]
test bl, bl
je 0x50213a
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x88]
push ecx
push esi
push edx
mov ecx, ebp
call fcn.004fecf0
xor eax, eax
cmp dword [esp + 0x28], eax
mov dword [esp + 0x10], eax
jle 0x50263f
lea ebx, [ebx]
mov ecx, dword [ebp + 0x1b8]
mov ebx, dword [ecx + eax*4]
mov ecx, ebx
mov dword [esp + 0x1c], 0
call fcn.004ef2a0
mov ecx, eax
add ecx, 0x34
call fcn.005037a0
cmp eax, esi
mov dword [esp + 0x18], eax
mov edi, 1
jge 0x50236f
cmp eax, dword [esp + 0x14]
jl 0x502349
cmp eax, 0xbf
ja 0x5021b1
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [esp + ecx*4 + 0x58], edx
setne cl
test cl, cl
jne 0x502349
cmp byte [ebp + 0x2c8], 0
je 0x502210
cmp dword [esp + 0x10], edi
jne 0x5021e7
cmp eax, 0xbf
ja 0x502210
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
sar eax, 5
test dword [ebp + eax*4 + 0x2cc], edx
setne al
test al, al
jne 0x502349
jmp 0x502210
cmp eax, 0xbf
ja 0x502349
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
sar eax, 5
test dword [ebp + eax*4 + 0x2cc], edx
setne al
test al, al
je 0x502349
lea edi, [ebx + 0x9c]
xor al, al
test edi, edi
je 0x50222d
cmp byte [0x992082], al
je 0x50222b
push edi
call dword [0x794290]
mov al, 1
test al, al
mov esi, dword [ebx + 0x14]
je 0x502244
cmp byte [0x992082], 0
je 0x502244
push edi
call dword [0x79428c]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0xa0]
push eax
push ecx
push esi
mov ecx, ebx
call fcn.004ef2a0
mov ecx, dword [ebp + 0x16c]
push eax
call fcn.004f1ca0
xor al, al
test edi, edi
je 0x50227c
cmp byte [0x992082], al
je 0x50227a
push edi
call dword [0x794290]
mov al, 1
test al, al
mov esi, dword [ebx + 0x18]
je 0x502293
cmp byte [0x992082], 0
je 0x502293
push edi
call dword [0x79428c]
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0xb0]
push edx
push eax
push esi
mov ecx, ebx
call fcn.004ef2a0
mov ecx, dword [ebp + 0x16c]
push eax
call fcn.004f1ca0
mov esi, dword [esp + 0x18]
shl esi, 4
add esi, dword [ebp + 0x78]
xor al, al
test edi, edi
je 0x5022d5
cmp byte [0x992082], al
je 0x5022d3
push edi
call dword [0x794290]
mov al, 1
test al, al
fld dword [ebx + 0x1c]
fstp dword [esp + 0x2c]
je 0x5022f0
cmp byte [0x992082], 0
je 0x5022f0
push edi
call dword [0x79428c]
fld dword [esp + 0x2c]
push esi
push ecx
lea ecx, [esp + 0xb8]
fstp dword [esp]
push ecx
lea edx, [esp + 0xac]
push edx
call fcn.0050ed30
mov eax, dword [esp + 0x28]
add esp, 0x10
test eax, eax
jl 0x502337
cmp eax, 0xc0
jge 0x502337
mov ecx, eax
sar ecx, 5
lea edx, [esp + ecx*4 + 0x58]
mov ecx, eax
and ecx, 0x1f
mov esi, 1
shl esi, cl
or dword [edx], esi
mov edx, dword [ebp + 0xb4]
mov esi, dword [esp + 0x20]
mov dword [edx + eax*4], ebx
mov edi, 1
lea eax, [esp + 0x18]
push eax
mov ecx, ebx
call fcn.004ef2a0
mov ecx, eax
add ecx, 0x34
call fcn.00503860
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], edi
cmp eax, esi
jl 0x502183
mov ecx, ebx
mov dword [esp + 0x1c], 0
call fcn.004ef2a0
mov ecx, eax
add ecx, 0x4c
call fcn.005037a0
cmp eax, esi
mov dword [esp + 0x18], eax
jge 0x5025d2
cmp eax, dword [esp + 0x14]
jl 0x5025ac
cmp eax, 0xbf
ja 0x5023c2
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [esp + ecx*4 + 0x3c], edx
setne cl
test cl, cl
jne 0x5025ac
cmp byte [ebp + 0x2c8], 0
je 0x502429
cmp dword [esp + 0x10], edi
jne 0x5023fe
cmp eax, 0xbf
ja 0x50245c
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [ebp + ecx*4 + 0x2cc], edx
setne cl
test cl, cl
jne 0x5025ac
jmp 0x502429
cmp eax, 0xbf
ja 0x5025ac
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [ebp + ecx*4 + 0x2cc], edx
setne cl
test cl, cl
je 0x5025ac
cmp eax, 0xbf
ja 0x50245c
mov ecx, eax
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [esp + ecx*4 + 0x70], edx
setne cl
test cl, cl
je 0x50245c
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
mov ecx, ebp
call fcn.004ffdb0
jmp 0x50258a
lea esi, [ebx + 0x9c]
xor al, al
test esi, esi
je 0x502479
cmp byte [0x992082], al
je 0x502477
push esi
call dword [0x794290]
mov al, 1
test al, al
mov edi, dword [ebx + 0x14]
je 0x502490
cmp byte [0x992082], 0
je 0x502490
push esi
call dword [0x79428c]
mov eax, dword [esp + 0x1c]
push eax
push edi
mov ecx, ebx
call fcn.004ef2a0
mov ecx, dword [ebp + 0x16c]
push eax
call fcn.004f1d40
mov dword [esp + 0x2c], eax
xor al, al
test esi, esi
je 0x5024c4
cmp byte [0x992082], al
je 0x5024c2
push esi
call dword [0x794290]
mov al, 1
test al, al
mov edi, dword [ebx + 0x18]
je 0x5024db
cmp byte [0x992082], 0
je 0x5024db
push esi
call dword [0x79428c]
mov ecx, dword [esp + 0x1c]
push ecx
push edi
mov ecx, ebx
call fcn.004ef2a0
mov ecx, dword [ebp + 0x16c]
push eax
call fcn.004f1d40
mov edi, eax
mov eax, dword [esp + 0x18]
lea edx, [eax + eax*2]
mov eax, dword [ebp + 0x84]
lea ecx, [eax + edx*4]
xor al, al
test esi, esi
mov dword [esp + 0x54], ecx
je 0x502521
cmp byte [0x992082], al
je 0x50251f
push esi
call dword [0x794290]
mov al, 1
test al, al
fld dword [ebx + 0x1c]
fstp dword [esp + 0x38]
je 0x50253c
cmp byte [0x992082], 0
je 0x50253c
push esi
call dword [0x79428c]
mov eax, dword [esp + 0x2c]
fld dword [edi]
fsub dword [eax]
mov ecx, dword [esp + 0x54]
fld dword [esp + 0x38]
mov esi, dword [esp + 0x20]
fld st(0)
fmulp st(2)
fld dword [eax]
faddp st(2)
fxch st(1)
fstp dword [ecx]
fld dword [edi + 4]
fsub dword [eax + 4]
fmul st(1)
fadd dword [eax + 4]
fstp dword [ecx + 4]
fld dword [edi + 8]
mov edi, 1
fsub dword [eax + 8]
fmulp st(1)
fadd dword [eax + 8]
fstp dword [ecx + 8]
mov edx, dword [ebp + 0xc0]
mov eax, dword [esp + 0x18]
mov dword [edx + eax*4], ebx
mov ecx, dword [esp + 0x18]
test ecx, ecx
jl 0x5025ac
cmp ecx, 0xc0
jge 0x5025ac
mov edx, ecx
sar edx, 5
lea eax, [esp + edx*4 + 0x3c]
and ecx, 0x1f
mov edx, edi
shl edx, cl
or dword [eax], edx
lea eax, [esp + 0x18]
push eax
mov ecx, ebx
call fcn.004ef2a0
mov ecx, eax
add ecx, 0x4c
call fcn.00503860
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], edi
cmp eax, esi
jl 0x502394
lea edi, [ebp + 0xd0]
xor al, al
test edi, edi
je 0x5025ef
cmp byte [0x992082], al
je 0x5025ed
push edi
call dword [0x794290]
mov al, 1
test al, al
mov cl, byte [ebp + 0x15c]
mov byte [esp + 0x27], cl
je 0x50260d
cmp byte [0x992082], 0
je 0x50260d
push edi
call dword [0x79428c]
cmp byte [esp + 0x27], 0
je 0x50262a
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x88]
push edx
push esi
push eax
push ebx
mov ecx, ebp
call fcn.004ff930
mov eax, dword [esp + 0x10]
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x10], eax
jl 0x502150
xor al, al
test edi, edi
je 0x502656
cmp byte [0x992082], al
je 0x502654
push edi
call dword [0x794290]
mov al, 1
cmp dword [ebp + 0x1bc], 0
setne bl
test al, al
je 0x502674
cmp byte [0x992082], 0
je 0x502674
push edi
call dword [0x79428c]
test bl, bl
je 0x502685
mov ecx, dword [esp + 0x14]
push esi
push ecx
mov ecx, ebp
call fcn.004fefc0
mov eax, dword [esp + 0x14]
cmp eax, esi
mov dword [esp + 0x10], eax
jge 0x5026f9
cmp eax, 0xbf
ja 0x5026b7
mov ecx, eax
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov ecx, eax
sar ecx, 5
test dword [ebp + ecx*4 + 0x288], edx
setne cl
test cl, cl
jne 0x5026ee
mov ecx, dword [ebp + 0x84]
lea edx, [eax + eax*2]
lea ebx, [ecx + edx*4]
mov edi, eax
shl edi, 6
add edi, dword [ebp + 0x30]
mov ecx, eax
shl ecx, 4
add ecx, dword [ebp + 0x78]
push edi
call fcn.005b0a30
fld dword [ebx]
fstp dword [edi + 0xc]
fld dword [ebx + 4]
fstp dword [edi + 0x1c]
fld dword [ebx + 8]
fstp dword [edi + 0x2c]
mov eax, dword [esp + 0x10]
add eax, 1
cmp eax, esi
mov dword [esp + 0x10], eax
jl 0x502691
lea edi, [ebp + 0xd0]
xor al, al
test edi, edi
je 0x502716
cmp byte [0x992082], al
je 0x502714
push edi
call dword [0x794290]
mov al, 1
test al, al
mov bl, byte [ebp + 0x15c]
je 0x502730
cmp byte [0x992082], 0
je 0x502730
push edi
call dword [0x79428c]
test bl, bl
je 0x502743
push esi
mov esi, dword [esp + 0x18]
push esi
mov ecx, ebp
call fcn.004ff7c0
jmp 0x502747
mov esi, dword [esp + 0x14]
lea edi, [ebp + 0x2a0]
mov ecx, edi
call fcn.005037a0
cmp eax, esi
jle 0x502761
mov ecx, edi
call fcn.005037a0
mov esi, eax
mov ecx, edi
call fcn.00503800
mov ebx, dword [esp + 0x20]
cmp eax, ebx
jge 0x502779
mov ecx, edi
call fcn.00503800
mov ebx, eax
cmp esi, ebx
mov eax, esi
mov dword [esp + 0x10], eax
jge 0x5027c1
mov edx, dword [ebp + 0x2c0]
push eax
mov edi, eax
mov eax, dword [ebp + 0x2bc]
push edx
shl edi, 6
add edi, dword [ebp + 0x30]
push 0
call eax
mov esi, eax
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
add esp, 0xc
lea ecx, [esp + 0x10]
push ecx
lea ecx, [ebp + 0x2a0]
call fcn.00503860
mov eax, dword [esp + 0x10]
cmp eax, ebx
jl 0x502783
mov eax, dword [esp + 0x28]
cmp eax, dword [ebp + 0x1b0]
mov ecx, eax
mov dword [esp + 0x10], ecx
jge 0x502846
jmp 0x5027e0
mov edx, dword [ebp + 0x1b8]
mov edi, dword [edx + ecx*4]
lea esi, [edi + 0x9c]
xor al, al
test esi, esi
je 0x502806
cmp byte [0x992082], al
je 0x502804
push esi
call dword [0x794290]
mov al, 1
test al, al
mov bl, byte [edi + 0x20]
je 0x50281d
cmp byte [0x992082], 0
je 0x50281d
push esi
call dword [0x79428c]
test bl, bl
jne 0x502833
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push edi
mov ecx, ebp
call fcn.004fff80
mov ecx, dword [esp + 0x10]
add ecx, 1
cmp ecx, dword [ebp + 0x1b0]
mov dword [esp + 0x10], ecx
jl 0x5027e0
mov ebx, dword [esp + 0x20]
push 0x40
lea edx, [esp + 0xc4]
push 0
push edx
call fcn.0074d440
mov edx, dword [esp + 0x20]
add esp, 0xc
cmp edx, ebx
mov dword [esp + 0x10], edx
jge 0x502903
mov edi, edi
mov edi, dword [ebp + 0x16c]
lea esi, [edi + 0x1bc]
xor al, al
test esi, esi
je 0x502897
cmp byte [0x992082], al
je 0x502895
push esi
call dword [0x794290]
mov edx, dword [esp + 0x10]
mov al, 1
test al, al
je 0x5028af
cmp byte [0x992082], 0
je 0x5028af
push esi
call dword [0x79428c]
mov edx, dword [esp + 0x10]
mov ecx, dword [edi + 8]
lea eax, [edx + edx*4]
mov eax, dword [ecx + eax*4 + 4]
test eax, eax
jl 0x5028f4
mov esi, dword [ebp + 0x30]
shl edx, 6
add esi, edx
mov ecx, 0x10
lea edi, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 0x30]
add edx, ecx
push edx
lea edx, [esp + 0xc4]
shl eax, 6
push edx
add eax, ecx
push eax
call dword [0x97e254]
mov edx, dword [esp + 0x1c]
add esp, 0xc
add edx, 1
cmp edx, ebx
mov dword [esp + 0x10], edx
jl 0x502870
cmp byte [esp + 0x34], 0
je 0x50291e
cmp byte [0x992082], 0
je 0x50291e
mov eax, dword [esp + 0x30]
push eax
call dword [0x79428c]
mov ecx, dword [esp + 0x100]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xfc
ret 4