Function at 0x416880
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x3a968
call fcn.00635b40
push ebx
push esi
push edi
xor edi, edi
push str.creating_render_list
mov dword [esp + 0x18], edi
call fcn.0044f400
mov edx, dword [ebp + 8]
add esp, 4
lea esi, [esp + 0x10]
mov dword [esp + 0x10], edi
call fcn.0041c950
test al, al
je 0x416977
lea ebx, [esp + 0x18]
mov esi, dword [esp + 0x10]
cmp dword [esi + 0x134], 0
jne 0x41695f
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x8c]
mov dword [ebx], 5
mov eax, dword [esi + 0x20]
mov dword [ebx + 4], eax
mov dword [ebx + 8], esi
add ebx, 0xc
add edi, 1
cmp dword [edx + 0x7f8], 0x2b
mov dword [esp + 0x14], ebx
jne 0x416925
cmp dword [esi + 0x13c], 0xffffffff
je 0x416925
mov dword [ebx], 6
mov eax, dword [esi + 0xc]
add eax, 0x4af38
mov dword [ebx + 4], eax
mov dword [ebx + 8], esi
add edi, 1
add ebx, 0xc
mov dword [esp + 0x14], ebx
mov eax, dword [esi + 0x24]
cmp eax, 0x1f
je 0x416932
cmp eax, 0x2d
jne 0x41695f
mov ebx, esi
call fcn.00461cd0
test al, al
je 0x41695b
mov eax, dword [esp + 0x14]
mov dword [eax], 7
mov dword [eax + 4], 0x61a7f
mov dword [eax + 8], esi
add edi, 1
add eax, 0xc
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x14]
mov edx, dword [ebp + 8]
lea esi, [esp + 0x10]
call fcn.0041c950
test al, al
jne 0x4168c2
mov dword [esp + 0x14], edi
mov ebx, dword [ebp + 8]
lea esi, [esp + 0x10]
mov edx, ebx
mov dword [esp + 0x10], 0
call fcn.0041ca10
test al, al
je 0x4169cf
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x20]
jmp 0x4169a0
mov eax, dword [esp + 0x10]
mov edx, dword [ebp + 8]
mov dword [ebx - 8], 0
mov ecx, dword [eax + 0x20]
mov dword [ebx - 4], ecx
mov dword [ebx], eax
lea esi, [esp + 0x10]
add edi, 1
add ebx, 0xc
call fcn.0041ca10
test al, al
jne 0x4169a0
mov dword [esp + 0x14], edi
mov ebx, edx
lea esi, [esp + 0x10]
mov edx, ebx
mov dword [esp + 0x10], 0
call fcn.0041c8f0
test al, al
je 0x416a9b
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0x24], 0x19
jne 0x416a0a
push ecx
lea edx, [esp + 0x18]
push edx
push ebx
lea eax, [esp + 0x24]
call fcn.004166c0
mov edi, dword [esp + 0x14]
jmp 0x416a88
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 2
mov edx, dword [ecx + 0x20]
add edi, 1
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [esp + 0x14], edi
call fcn.00533f70
test al, al
je 0x416a59
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 3
mov edx, dword [ecx + 0x1c]
imul edx, edx, 0x2710
add edx, 0x30d43
add edi, 1
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [esp + 0x14], edi
cmp dword [ecx + 0x24], 0x14
jne 0x416a88
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 4
mov edx, dword [ecx + 0x1c]
imul edx, edx, 0x2710
add edx, 0x4a769
add edi, 1
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [esp + 0x14], edi
lea esi, [esp + 0x10]
mov edx, ebx
call fcn.0041c8f0
test al, al
jne 0x4169ea
lea esi, [esp + 0x10]
mov edx, ebx
mov dword [esp + 0x10], 0
call fcn.0041c9b0
test al, al
je 0x416b0a
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x18]
lea esp, [esp]
mov eax, dword [esp + 0x10]
mov dword [ebx], 1
mov ecx, dword [eax + 0x20]
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
add ebx, 0xc
mov dword [ebx], 0x13
mov edx, dword [eax + 0x1c]
imul edx, edx, 0x2710
add edx, 0x30d43
mov dword [ebx + 4], edx
mov edx, dword [ebp + 8]
add edi, 1
mov dword [ebx + 8], eax
lea esi, [esp + 0x10]
add edi, 1
add ebx, 0xc
call fcn.0041c9b0
test al, al
jne 0x416ac0
mov edx, dword [ebp + 8]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], 0
call fcn.0041ca70
test al, al
je 0x416b59
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x20]
lea esp, [esp]
mov eax, dword [esp + 0x10]
mov edx, dword [ebp + 8]
mov dword [ebx - 8], 0x14
mov ecx, dword [eax + 0x10]
mov dword [ebx - 4], ecx
mov dword [ebx], eax
lea esi, [esp + 0x10]
add edi, 1
add ebx, 0xc
call fcn.0041ca70
test al, al
jne 0x416b30
mov eax, dword [ebp + 8]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], 0
call fcn.0041cb30
test al, al
je 0x416ba7
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x20]
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x1d], 0
jne 0x416b97
mov dword [ebx - 8], 9
mov edx, dword [eax + 0x20]
mov dword [ebx - 4], edx
mov dword [ebx], eax
add edi, 1
add ebx, 0xc
mov eax, dword [ebp + 8]
lea esi, [esp + 0x10]
call fcn.0041cb30
test al, al
jne 0x416b78
mov eax, dword [ebp + 8]
lea esi, [esp + 0x10]
mov dword [esp + 0x10], 0
call fcn.0041cb90
test al, al
je 0x416bf5
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x20]
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x64], 0
jne 0x416be5
mov dword [ebx - 8], 0xa
mov ecx, dword [eax + 0x68]
mov dword [ebx - 4], ecx
mov dword [ebx], eax
add edi, 1
add ebx, 0xc
mov eax, dword [ebp + 8]
lea esi, [esp + 0x10]
call fcn.0041cb90
test al, al
jne 0x416bc6
mov edx, dword [ebp + 8]
xor ebx, ebx
lea esi, [esp + 0x10]
mov dword [esp + 0x10], ebx
call fcn.0041cad0
test al, al
je 0x416c7e
fld qword [0x679318]
lea ebx, [edi + edi*2]
lea ebx, [esp + ebx*4 + 0x18]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x8c]
mov dword [ebx], 0x17
mov edx, dword [esi + 0x1c]
mov dword [ebx + 4], edx
mov dword [ebx + 8], esi
add edi, 1
add ebx, 0xc
cmp dword [ecx + 0x7f8], 0x2b
jne 0x416c6a
cmp dword [esi + 8], 0xa
jne 0x416c6a
mov dword [ebx], 0x18
fld dword [esi + 0x28]
fsub st(1)
call fcn.006397d0
add eax, 0x4af38
mov dword [ebx + 4], eax
mov dword [ebx + 8], esi
add edi, 1
add ebx, 0xc
mov edx, dword [ebp + 8]
lea esi, [esp + 0x10]
call fcn.0041cad0
test al, al
jne 0x416c18
fstp st(0)
xor ebx, ebx
cmp dword [edx + 0x624], ebx
je 0x416ca0
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], ebx
mov dword [eax + 4], 0x30d42
add edi, 1
cmp dword [edx + 0x628], ebx
je 0x416cc6
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], 1
mov dword [eax + 4], 0x33452
add edi, 1
cmp dword [edx + 0x62c], ebx
je 0x416cec
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], 2
mov dword [eax + 4], 0x35b62
add edi, 1
cmp dword [edx + 0x630], ebx
je 0x416d12
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], 3
mov dword [eax + 4], 0x38272
add edi, 1
cmp dword [edx + 0x634], ebx
je 0x416d38
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], 4
mov dword [eax + 4], 0x3a982
add edi, 1
cmp dword [edx + 0x638], ebx
je 0x416d5e
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xb
mov dword [eax + 8], 5
mov dword [eax + 4], 0x3d092
add edi, 1
cmp dword [edx + 0x5748], ebx
jle 0x416d6d
mov ecx, 0xc3500
jmp 0x416dc2
mov eax, dword [edx + 0x8c]
mov eax, dword [eax + 0x7fc]
cmp eax, 3
je 0x416dbd
cmp eax, 4
je 0x416dbd
mov eax, dword [edx + 0x15c]
mov ecx, dword [eax + 0x20]
add ecx, dword [0x6aa234]
cmp dword [eax + 8], ecx
jg 0x416dbd
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x5584]
cmp eax, 0xf
je 0x416dbd
cmp eax, 0x10
je 0x416dbd
cmp eax, 0x11
je 0x416dbd
cmp dword [edx + 0x55ec], 0x3e
mov ecx, 0xc3500
jne 0x416dc2
jmp 0x840000
lea eax, [edi + edi*2]
mov dword [esp + eax*4 + 0x18], 0x10
mov dword [esp + eax*4 + 0x1c], 0x186a0
mov dword [esp + eax*4 + 0x20], ebx
lea eax, [esp + eax*4 + 0x18]
add edi, 1
lea eax, [edi + edi*2]
mov dword [esp + eax*4 + 0x18], 0xf
mov dword [esp + eax*4 + 0x1c], ecx
mov dword [esp + eax*4 + 0x20], ebx
lea eax, [esp + eax*4 + 0x18]
add edi, 1
lea eax, [edi + edi*2]
mov dword [esp + eax*4 + 0x18], 0x12
mov dword [esp + eax*4 + 0x1c], 0x927c0
mov dword [esp + eax*4 + 0x20], ebx
lea eax, [esp + eax*4 + 0x18]
add edi, 1
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xc
mov dword [eax + 4], 0xaae60
mov dword [eax + 8], ebx
add edi, 1
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0x15
mov dword [eax + 4], 0xdbba0
mov dword [eax + 8], ebx
mov eax, dword [edx + 0x8c]
add edi, 1
cmp dword [eax + 0x7fc], 4
jne 0x416e8b
mov ecx, dword [edx + 0x554c]
cmp ecx, 4
je 0x416e70
cmp ecx, 5
mov esi, 0x50cfa
jne 0x416e75
mov esi, 0x497cc
lea ecx, [edi + edi*2]
lea ecx, [esp + ecx*4 + 0x18]
mov dword [ecx], 0x11
mov dword [ecx + 4], esi
mov dword [ecx + 8], ebx
add edi, 1
cmp dword [eax + 0x768], ebx
mov esi, 0x28
je 0x416eb2
mov ecx, dword [eax + 0x7f8]
cmp ecx, 0x2f
je 0x416ede
cmp ecx, ebx
jne 0x416eb2
mov ecx, dword [eax + 0x82c]
cmp dword [ecx + 0x24], esi
je 0x416ede
cmp dword [eax + 0x7f8], 0x15
je 0x416ede
cmp dword [edx + 0x554c], 3
jne 0x416ede
lea ecx, [edi + edi*2]
lea ecx, [esp + ecx*4 + 0x18]
mov dword [ecx], 0xd
mov dword [ecx + 4], 0x7a120
mov dword [ecx + 8], ebx
add edi, 1
cmp dword [eax + 0x768], ebx
je 0x416f00
mov ecx, dword [eax + 0x7f8]
jmp 0x828750
cmp dword [eax + 0x7f8], 0x13
jne 0x416f23
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 0xe
mov dword [eax + 4], 0x7a123
mov dword [eax + 8], ebx
add edi, 1
mov ecx, dword [edx + 0x13c]
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x18]
mov dword [eax], 8
mov edx, dword [ecx + 0x20]
push str.start_sort
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
add edi, 1
call fcn.0044f400
lea esi, [edi + edi*2]
lea esi, [esp + esi*4 + 0x1c]
lea eax, [esp + 0x1c]
mov ecx, esi
sub ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
add esp, 4
shr ecx, 0x1f
push 0x416690
add ecx, edx
push ecx
lea edx, [esp + 0x20]
push esi
push edx
call fcn.0041e840
push str.end_sort__start_draw
call fcn.0044f400
add esp, 0x14
cmp edi, ebx
jle 0x417340
lea ebx, [esp + 0x20]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edi
mov eax, dword [ebx - 8]
cmp eax, 0x18
ja case.default.0x416fac
jmp dword [eax*4 + 0x417358]
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
push eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.00465a90
mov eax, dword [ebx]
fld dword [esi + 8]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp case.default.0x416fac
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov edx, esi
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
mov ecx, dword [ecx + 0x8c]
mov ecx, dword [ecx + 0x81c]
call fcn.00521f30
fld dword [esi + 8]
mov eax, dword [ebx]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp case.default.0x416fac
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
mov ebx, eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.00465460
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
fld dword [esi + 8]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp 0x41732a
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebx]
call fcn.00458a80
jmp case.default.0x416fac
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
mov ebx, eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.0052e2e0
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
jmp 0x417073
mov edi, dword [ebx]
cmp byte [edi + 0x18], 0
je case.default.0x416fac
fild dword [edi + 8]
mov esi, dword [ebp + 0xc]
push esi
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [edi + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.005340c0
mov eax, dword [ebx]
fld dword [esi + 8]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp case.default.0x416fac
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebx]
push ecx
call fcn.0052cca0
jmp case.default.0x416fac
mov edx, dword [ebp + 8]
call fcn.0041d390
mov edi, eax
test edi, edi
je case.default.0x416fac
cmp byte [edi + 0x18], 0
je case.default.0x416fac
fild dword [edi + 8]
mov esi, dword [ebp + 0xc]
mov edx, dword [ebx]
push edx
fadd dword [esi + 8]
mov ebx, esi
fstp dword [esi + 8]
fild dword [edi + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.00536940
fld dword [esi + 8]
fisub dword [edi + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [edi + 0xc]
fstp dword [esi + 0xc]
jmp 0x41732a
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
push eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.00431810
mov eax, dword [ebx]
fld dword [esi + 8]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp case.default.0x416fac
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
push eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.0046e540
mov eax, dword [ebx]
fld dword [esi + 8]
fisub dword [eax + 8]
fstp dword [esi + 8]
fld dword [esi + 0xc]
fisub dword [eax + 0xc]
fstp dword [esi + 0xc]
jmp case.default.0x416fac
mov esi, dword [ebx]
cmp byte [esi + 0x18], 0
je case.default.0x416fac
fild dword [esi + 8]
mov edi, dword [ebp + 0xc]
push edi
fadd dword [edi + 8]
fstp dword [edi + 8]
fild dword [esi + 0xc]
fadd dword [edi + 0xc]
fstp dword [edi + 0xc]
call fcn.0046e8c0
mov eax, dword [ebx]
fld dword [edi + 8]
fisub dword [eax + 8]
fstp dword [edi + 8]
fld dword [edi + 0xc]
fisub dword [eax + 0xc]
fstp dword [edi + 0xc]
jmp case.default.0x416fac
mov eax, dword [ebx]
cmp byte [eax + 0x18], 0
je case.default.0x416fac
fild dword [eax + 8]
mov esi, dword [ebp + 0xc]
push esi
mov ebx, eax
fadd dword [esi + 8]
fstp dword [esi + 8]
fild dword [eax + 0xc]
fadd dword [esi + 0xc]
fstp dword [esi + 0xc]
call fcn.00438eb0
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
jmp 0x417073
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebx]
call fcn.0044d140
jmp case.default.0x416fac
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebx]
push ecx
call fcn.0044d070
jmp case.default.0x416fac
mov edx, dword [ebp + 0xc]
mov eax, dword [ebx]
mov ecx, dword [ebp + 8]
push edx
call fcn.00416140
jmp case.default.0x416fac
mov eax, dword [esp + 0x14]
mov ebx, dword [ebp + 0xc]
mov edi, dword [eax]
call fcn.00518370
jmp 0x41732a
mov ecx, dword [ebp + 0xc]
push 0
push ecx
mov ecx, dword [ebx]
call fcn.00472e40
jmp case.default.0x416fac
mov edx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
push edx
call fcn.0041a2a0
jmp case.default.0x416fac
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
push eax
push ecx
call fcn.00416290
jmp case.default.0x416fac
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
call fcn.00417cf0
jmp case.default.0x416fac
mov edx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
push edx
call fcn.0041a0a0
jmp case.default.0x416fac
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
push eax
push ecx
call fcn.0041aa40
jmp case.default.0x416fac
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edx
push eax
call fcn.0041a730
jmp case.default.0x416fac
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov esi, dword [ecx + 0x160]
call fcn.00426b20
jmp case.default.0x416fac
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
call fcn.00419eb0
mov ebx, dword [esp + 0x14]
add ebx, 0xc
sub dword [esp + 0x10], 1
mov dword [esp + 0x14], ebx
jne 0x416fa0
push str.end_draw
call fcn.0044f400
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8