Function at 0x56cf20
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x666118
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x168
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 0x34]
xor esi, esi
cmp eax, esi
push edi
mov dword [esp + 0x30], ebx
jne 0x56cf55
xor eax, eax
jmp 0x56df79
lea eax, [esp + 0x48]
mov ecx, ebx
push eax
call fcn.00578940
mov ecx, dword [eax]
mov dword [esp + 0x88], ecx
mov edx, dword [eax + 4]
fld dword [esp + 0x88]
mov ecx, dword [eax + 8]
mov dword [esp + 0x8c], edx
fcomp dword [esp + 0x8c]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], edx
fnstsw ax
test ah, 1
je 0x56cfb2
fld dword [esp + 0x90]
fcomp dword [esp + 0x94]
fnstsw ax
test ah, 1
jne 0x56cfb9
xor eax, eax
jmp 0x56df79
mov ecx, ebx
call fcn.0056cdf0
mov ebp, eax
cmp ebp, esi
jne 0x56cfcd
xor eax, eax
jmp 0x56df79
mov ecx, ebx
call fcn.0056cdd0
cmp eax, esi
jne 0x56cfdf
xor eax, eax
jmp 0x56df79
mov ecx, ebp
call fcn.004c4db0
cmp eax, esi
mov dword [esp + 0x40], eax
jne 0x56d065
mov eax, dword [ebx + 0xc]
push eax
call fcn.00494570
mov edi, eax
add esp, 4
cmp edi, esi
mov dword [esp + 0x40], edi
jne 0x56d030
push ecx
mov ecx, esp
mov dword [esp + 0x84], esp
push 0xffffffffffffffff
push 0x6e6cb8
call fcn.00499a80
mov ecx, dword [ebx + 0xc]
push ecx
call fcn.004946d0
mov edi, eax
add esp, 8
cmp edi, esi
mov dword [esp + 0x40], edi
je 0x56d065
mov dword [esp + 0x38], esi
mov ecx, dword [ebx + 0x34]
lea edx, [esp + 0x38]
push edx
push edi
mov dword [esp + 0x188], esi
call fcn.00495c80
push edi
mov ecx, ebp
call fcn.004c4e80
lea ecx, [esp + 0x38]
mov dword [esp + 0x180], 0xffffffff
call fcn.00499a60
push 0x110
call fcn.006247b3
add esp, 4
mov dword [esp + 0x68], eax
cmp eax, esi
mov dword [esp + 0x180], 1
je 0x56d090
mov ecx, eax
call fcn.005994a0
mov ebx, eax
jmp 0x56d092
xor ebx, ebx
lea ecx, [esp + 0x14c]
mov dword [esp + 0x180], 0xffffffff
mov dword [esp + 0x108], 0
mov dword [esp + 0x104], 0
mov dword [esp + 0x100], 0
mov dword [esp + 0xfc], 0
mov dword [esp + 0x11c], esi
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x138], esi
mov dword [esp + 0x148], 0
mov dword [esp + 0x144], 0
mov dword [esp + 0x140], 0
mov dword [esp + 0x13c], 0
call fcn.0056e060
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0xfc]
mov dword [esp + 0x16c], esi
mov dword [esp + 0x168], esi
mov dword [esp + 0x164], esi
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0x48]
push eax
mov dword [esp + 0x134], esi
mov dword [esp + 0x138], 1
mov dword [esp + 0x164], 0x41100000
mov dword [esp + 0x178], esi
call fcn.0056ce10
mov ecx, dword [eax]
mov dword [esp + 0xfc], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x100], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x104], ecx
mov ecx, ebp
mov edx, dword [eax + 0xc]
mov dword [esp + 0x10c], esi
mov dword [esp + 0x108], edx
mov dword [esp + 0x114], esi
call fcn.004c4150
cmp eax, 4
mov dword [esp + 0x80], eax
ja case.0x56d1da.71
jmp dword [eax*4 + 0x56df94]
mov edi, 0xc8000001
jmp 0x56d1fb
mov edi, 0xc8000004
jmp 0x56d1fb
mov edi, 0xc8000002
jmp 0x56d1fb
mov edi, 0xc8000008
mov ecx, ebp
call fcn.004c4ad0
dec eax
cmp eax, 5
ja case.default.0x56d208
jmp dword [eax*4 + 0x56dfa8]
or edi, 0x20
jmp 0x56d23c
or edi, 0x40
jmp 0x56d23c
or edi, 0x80
jmp 0x56d23c
or edi, 0x100
jmp 0x56d23c
or edi, 0x200
jmp 0x56d23c
or edi, 0x400
jmp 0x56d23c
or edi, 0x10
push ecx
mov dword [esp + 0x11c], edi
mov ecx, esp
mov dword [esp + 0x38], esp
push 0xffffffffffffffff
push 0x6f33b8
call fcn.00499a80
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x48]
push eax
push ecx
mov ecx, ebp
call fcn.004c46d0
mov eax, dword [esp + 0x44]
cmp eax, esi
jle 0x56d393
fld dword [esp + 0x18]
fcomp dword [0x675254]
mov dword [esp + 0x48], eax
fnstsw ax
test ah, 0x41
jne 0x56d2a3
fld dword [esp + 0x18]
fld dword [esp + 0x18]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d2af
fstp dword [esp + 0x4c]
jmp 0x56d2b9
fld dword [0x675254]
fstp dword [esp + 0x4c]
jmp 0x56d2b9
fstp st(0)
mov dword [esp + 0x4c], 0x3f800000
fld dword [esp + 0x1c]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d2e5
fld dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d2f1
fstp dword [esp + 0x50]
jmp 0x56d2fb
fld dword [0x675254]
fstp dword [esp + 0x50]
jmp 0x56d2fb
fstp st(0)
mov dword [esp + 0x50], 0x3f800000
fld dword [esp + 0x20]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d327
fld dword [esp + 0x20]
fld dword [esp + 0x20]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d333
fstp dword [esp + 0x54]
jmp 0x56d33d
fld dword [0x675254]
fstp dword [esp + 0x54]
jmp 0x56d33d
fstp st(0)
mov dword [esp + 0x54], 0x3f800000
fld dword [esp + 0x24]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d369
fld dword [esp + 0x24]
fld dword [esp + 0x24]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d375
fstp dword [esp + 0x58]
jmp 0x56d37f
fld dword [0x675254]
fstp dword [esp + 0x58]
jmp 0x56d37f
fstp st(0)
mov dword [esp + 0x58], 0x3f800000
mov ecx, 5
lea esi, [esp + 0x48]
lea edi, [esp + 0x11c]
rep movsd dword es:[edi], dword [esi]
xor esi, esi
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push 0xffffffffffffffff
push 0x6f1e34
call fcn.00499a80
lea edx, [esp + 0x1c]
lea eax, [esp + 0x48]
push edx
push eax
mov ecx, ebp
call fcn.004c46d0
mov eax, dword [esp + 0x44]
cmp eax, esi
jle 0x56d4e3
fld dword [esp + 0x18]
fcomp dword [0x675254]
mov dword [esp + 0x48], eax
fnstsw ax
test ah, 0x41
jne 0x56d3f3
fld dword [esp + 0x18]
fld dword [esp + 0x18]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d3ff
fstp dword [esp + 0x4c]
jmp 0x56d409
fld dword [0x675254]
fstp dword [esp + 0x4c]
jmp 0x56d409
fstp st(0)
mov dword [esp + 0x4c], 0x3f800000
fld dword [esp + 0x1c]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d435
fld dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d441
fstp dword [esp + 0x50]
jmp 0x56d44b
fld dword [0x675254]
fstp dword [esp + 0x50]
jmp 0x56d44b
fstp st(0)
mov dword [esp + 0x50], 0x3f800000
fld dword [esp + 0x20]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d477
fld dword [esp + 0x20]
fld dword [esp + 0x20]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d483
fstp dword [esp + 0x54]
jmp 0x56d48d
fld dword [0x675254]
fstp dword [esp + 0x54]
jmp 0x56d48d
fstp st(0)
mov dword [esp + 0x54], 0x3f800000
fld dword [esp + 0x24]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d4b9
fld dword [esp + 0x24]
fld dword [esp + 0x24]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d4c5
fstp dword [esp + 0x58]
jmp 0x56d4cf
fld dword [0x675254]
fstp dword [esp + 0x58]
jmp 0x56d4cf
fstp st(0)
mov dword [esp + 0x58], 0x3f800000
mov ecx, 5
lea esi, [esp + 0x48]
lea edi, [esp + 0x138]
rep movsd dword es:[edi], dword [esi]
xor esi, esi
mov edi, dword [esp + 0x30]
mov ecx, edi
call fcn.005797e0
mov ecx, edi
mov dword [esp + 0x134], eax
call fcn.0057a790
dec eax
mov ecx, 3
cmp eax, ecx
ja case.default.0x56d506
jmp dword [eax*4 + 0x56dfc0]
mov eax, ecx
mov dword [esp + 0x130], 1
mov dword [esp + 0x164], eax
mov dword [esp + 0x168], ecx
mov dword [esp + 0x16c], esi
jmp 0x56d57d
mov ecx, dword [esp + 0x134]
mov dword [esp + 0x130], 2
lea edx, [ecx + ecx]
mov dword [esp + 0x134], edx
jmp 0x56d57d
mov eax, dword [esp + 0x134]
mov dword [esp + 0x130], ecx
lea ecx, [eax + eax]
mov dword [esp + 0x134], ecx
jmp 0x56d57d
mov dword [esp + 0x130], 4
jmp 0x56d57d
mov dword [esp + 0x130], esi
lea edx, [esp + 0x3c]
mov ecx, ebp
push edx
call fcn.004c4c20
push esi
lea ecx, [esp + 0x40]
mov dword [esp + 0x184], 2
call fcn.004c1800
test eax, eax
je 0x56d6e2
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0x48]
push eax
push ecx
lea ecx, [esp + 0x48]
call fcn.004c1d60
fld dword [esp + 0x18]
fcomp dword [0x675254]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x48], edx
fnstsw ax
test ah, 0x41
jne 0x56d5ee
fld dword [esp + 0x18]
fld dword [esp + 0x18]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d5fa
fstp dword [esp + 0x4c]
jmp 0x56d604
fld dword [0x675254]
fstp dword [esp + 0x4c]
jmp 0x56d604
fstp st(0)
mov dword [esp + 0x4c], 0x3f800000
fld dword [esp + 0x1c]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d630
fld dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d63c
fstp dword [esp + 0x50]
jmp 0x56d646
fld dword [0x675254]
fstp dword [esp + 0x50]
jmp 0x56d646
fstp st(0)
mov dword [esp + 0x50], 0x3f800000
fld dword [esp + 0x20]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d672
fld dword [esp + 0x20]
fld dword [esp + 0x20]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d67e
fstp dword [esp + 0x54]
jmp 0x56d688
fld dword [0x675254]
fstp dword [esp + 0x54]
jmp 0x56d688
fstp st(0)
mov dword [esp + 0x54], 0x3f800000
fld dword [esp + 0x24]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
jne 0x56d6b4
fld dword [esp + 0x24]
fld dword [esp + 0x24]
fcomp dword [0x67222c]
fnstsw ax
test ah, 1
je 0x56d6c0
fstp dword [esp + 0x58]
jmp 0x56d6ca
fld dword [0x675254]
fstp dword [esp + 0x58]
jmp 0x56d6ca
fstp st(0)
mov dword [esp + 0x58], 0x3f800000
mov ecx, 5
lea esi, [esp + 0x48]
lea edi, [esp + 0x14c]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x30]
xor esi, esi
mov dword [esp + 0x78], esi
lea ecx, [esp + 0x3c]
mov byte [esp + 0x180], 3
call fcn.004c13d0
test eax, eax
je 0x56d719
lea eax, [esp + 0x34]
lea ecx, [esp + 0x78]
push eax
push ecx
lea ecx, [esp + 0x44]
call fcn.004c1440
mov edx, dword [esp + 0x34]
mov dword [esp + 0x160], edx
fld dword [esp + 0x160]
fcomp dword [0x675254]
fnstsw ax
test ah, 0x41
je 0x56d738
or dword [esp + 0x118], 0x400000
mov ecx, dword [edi + 0x34]
call fcn.00495de0
mov dword [esp + 0x7c], esi
cmp eax, esi
mov byte [esp + 0x180], 4
je 0x56d75e
lea ecx, [esp + 0x7c]
push ecx
mov ecx, dword [edi + 0x34]
push eax
call fcn.00495c60
push 0x28
call fcn.006247b3
add esp, 4
mov dword [esp + 0x68], eax
cmp eax, esi
mov byte [esp + 0x180], 5
je 0x56d784
push edi
mov ecx, eax
call fcn.00599f60
mov edi, eax
jmp 0x56d786
xor edi, edi
mov eax, dword [esp + 0x40]
mov edx, dword [edi]
push eax
mov ecx, edi
mov dword [esp + 0x38], edi
mov byte [esp + 0x184], 4
call dword [edx + 0x14]
mov edx, dword [edi]
lea eax, [esp + 0x78]
push eax
mov ecx, edi
call dword [edx + 0x18]
mov dword [esp + 0x110], edi
mov edx, dword [ebx]
lea eax, [esp + 0xfc]
mov ecx, ebx
push eax
call dword [edx + 8]
test eax, eax
je 0x56df25
mov dword [esp + 0x68], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x74], esi
push ecx
mov byte [esp + 0x184], 9
mov ecx, esp
mov dword [esp + 0x88], esp
push 0xffffffffffffffff
push 0x7231d8
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d83e
lea ecx, [esp + 0x10]
push ecx
mov ecx, ebp
call fcn.0055e560
push eax
lea ecx, [esp + 0x70]
mov byte [esp + 0x184], 0xa
call fcn.004a3220
lea ecx, [esp + 0x10]
mov byte [esp + 0x180], 9
call fcn.00499a60
lea edx, [esp + 0x6c]
mov ecx, ebx
push edx
push 1
call fcn.00599960
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push 0xffffffffffffffff
push 0x723344
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d899
lea eax, [esp + 0x10]
mov ecx, ebp
push eax
call fcn.0056dfe0
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0x184], 0xb
call fcn.004a3220
lea ecx, [esp + 0x10]
mov byte [esp + 0x180], 9
call fcn.00499a60
lea ecx, [esp + 0x60]
push ecx
push 2
mov ecx, ebx
call fcn.00599960
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push 0xffffffffffffffff
push 0x723340
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d8f4
lea edx, [esp + 0x10]
mov ecx, ebp
push edx
call fcn.0056e020
push eax
lea ecx, [esp + 0x78]
mov byte [esp + 0x184], 0xc
call fcn.004a3220
lea ecx, [esp + 0x10]
mov byte [esp + 0x180], 9
call fcn.00499a60
lea eax, [esp + 0x74]
mov ecx, ebx
push eax
push 3
call fcn.00599960
push ecx
mov dword [esp + 0x74], esi
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push 0x6f1b28
mov dword [esp + 0x70], esi
mov dword [esp + 0x1c], esi
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d946
push ecx
mov ecx, esp
mov dword [esp + 0x74], esp
push 0xffffffffffffffff
push 0x6f1b28
call fcn.00499a80
mov ecx, ebp
call fcn.004c4930
push eax
push 1
mov ecx, ebx
mov dword [esp + 0x78], eax
call fcn.005999c0
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push 0x72333c
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d98c
push ecx
mov ecx, esp
mov dword [esp + 0x68], esp
push 0xffffffffffffffff
push 0x72333c
call fcn.00499a80
mov ecx, ebp
call fcn.004c4930
push eax
push 2
mov ecx, ebx
mov dword [esp + 0x6c], eax
call fcn.005999c0
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push 0x723338
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
cmp eax, esi
je 0x56d9d2
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push 0xffffffffffffffff
push 0x723338
call fcn.00499a80
mov ecx, ebp
call fcn.004c4930
push eax
push 3
mov ecx, ebx
mov dword [esp + 0x18], eax
call fcn.005999c0
lea ecx, [esp + 0x2c]
push ecx
mov ecx, ebp
call fcn.004c4a30
mov edx, dword [eax]
lea eax, [esp + 0x84]
push eax
mov ecx, ebx
mov dword [esp + 0x88], edx
call fcn.00599a10
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0xac], esi
push 4
lea ecx, [esp + 0xb4]
mov byte [esp + 0x184], 0xd
call fcn.0049b150
mov ecx, dword [0x6b1564]
mov dword [esp + 0xdc], 0
mov edx, ecx
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xc8], edx
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xe4], esi
mov dword [esp + 0xec], esi
push 0x723348
lea ecx, [esp + 0xb0]
mov byte [esp + 0x184], 0x10
mov dword [esp + 0xac], 0x3f800000
call fcn.00499c60
push 0xffffffffffffffff
push 0x6e53d0
lea ecx, [esp + 0x40]
call fcn.00499a80
mov eax, dword [esp + 0xb4]
push 1
push eax
lea ecx, [esp + 0xb8]
mov byte [esp + 0x188], 0x11
call fcn.0049b340
mov dword [esp + 0x2c], eax
mov dword [esp + 0xf8], eax
cmp eax, esi
mov byte [esp + 0x180], 0x12
je 0x56db04
lea ecx, [esp + 0x38]
push ecx
mov ecx, eax
call fcn.00499b80
lea ecx, [esp + 0x38]
mov byte [esp + 0x180], 0x10
call fcn.00499a60
mov dword [esp + 0xc4], esi
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe8], esi
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], esi
mov dword [esp + 0x14], esi
push 0xffffffffffffffff
push 0x6e6d20
lea ecx, [esp + 0x34]
mov byte [esp + 0x188], 0x14
call fcn.00499a80
mov edx, dword [esp + 0xb4]
push 1
push edx
lea ecx, [esp + 0xb8]
mov byte [esp + 0x188], 0x15
call fcn.0049b340
mov dword [esp + 0xf8], eax
mov dword [esp + 0x28], eax
cmp eax, esi
mov byte [esp + 0x180], 0x16
je 0x56db95
lea ecx, [esp + 0x2c]
push ecx
mov ecx, eax
call fcn.00499b80
lea ecx, [esp + 0x2c]
mov byte [esp + 0x180], 0x14
call fcn.00499a60
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x48]
push edx
mov dword [esp + 0xc8], 1
call fcn.0056cc10
mov ecx, 6
mov esi, eax
lea edi, [esp + 0xc8]
lea eax, [esp + 0x88]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x30]
push eax
mov ecx, esi
call fcn.0056ce10
mov ecx, dword [eax]
mov dword [esp + 0x98], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x9c], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x40]
mov edx, dword [eax + 0xc]
lea eax, [esp + 0xe4]
push eax
push ecx
mov ecx, dword [esi + 0x34]
mov dword [esp + 0xac], edx
mov dword [esp + 0xe8], 1
call fcn.00495c60
test eax, eax
jne 0x56dc3e
push 0x6f1a74
lea ecx, [esp + 0xe8]
call fcn.00499c60
mov edx, dword [esp + 0x40]
mov eax, dword [ebx]
push 0
push 1
mov ecx, ebx
mov dword [esp + 0xf0], edx
call dword [eax + 0xb4]
mov edx, dword [ebx]
lea eax, [esp + 0x14]
push eax
mov ecx, ebx
call dword [edx + 0x18]
mov eax, dword [esp + 0x14]
test eax, eax
lea edi, [eax + 0xc]
jne 0x56dc73
mov edi, 0x7427d8
mov ecx, dword [esp + 0x70]
push ecx
mov dword [esp + 0xf8], ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
call fcn.00499a80
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x9c]
push 0
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x18c], 0x14
lea esi, [edx + 0x10]
call fcn.0056dfd0
push eax
push edi
mov ecx, esi
call fcn.0057e460
mov eax, dword [esp + 0x80]
cmp eax, 3
je 0x56dd0a
cmp eax, 4
je 0x56dd0a
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
call fcn.00499a80
push 1
mov ecx, esi
call fcn.0057f190
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
call fcn.00499a80
push 2
mov ecx, esi
call fcn.0057f190
jmp 0x56de26
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x56dd4e
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x72333c
call fcn.00499a80
mov ecx, ebp
call fcn.004c4280
test eax, eax
jne 0x56dd4e
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
call fcn.00499a80
push 1
mov ecx, esi
call fcn.0057f190
jmp 0x56ddba
mov edx, dword [ebx]
push 0
push 2
mov ecx, ebx
call dword [edx + 0xb4]
mov eax, dword [ebx]
lea ecx, [esp + 0x14]
push ecx
mov ecx, ebx
call dword [eax + 0x18]
mov eax, dword [esp + 0x14]
test eax, eax
lea edi, [eax + 0xc]
jne 0x56dd78
mov edi, 0x7427d8
mov edx, dword [esp + 0x64]
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
mov dword [esp + 0x100], edx
call fcn.00499a80
lea eax, [esp + 0x9c]
push 1
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x18c], 0x14
call fcn.0056dfd0
push eax
push edi
mov ecx, esi
call fcn.0057e460
mov edx, dword [ebx]
push 0
push 3
mov ecx, ebx
call dword [edx + 0xb4]
mov eax, dword [ebx]
lea ecx, [esp + 0x14]
push ecx
mov ecx, ebx
call dword [eax + 0x18]
mov eax, dword [esp + 0x14]
test eax, eax
lea edi, [eax + 0xc]
jne 0x56dde4
mov edi, 0x7427d8
mov edx, dword [esp + 0x10]
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push 0x7427d8
mov dword [esp + 0x100], edx
call fcn.00499a80
lea eax, [esp + 0x9c]
push 2
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x18c], 0x14
call fcn.0056dfd0
push eax
push edi
mov ecx, esi
call fcn.0057e460
lea ecx, [esp + 0x14]
mov byte [esp + 0x180], 0x13
call fcn.00499a60
lea ecx, [esp + 0xec]
mov byte [esp + 0x180], 0x1c
call fcn.00499a60
lea ecx, [esp + 0xe4]
mov byte [esp + 0x180], 0x1b
call fcn.00499a60
lea ecx, [esp + 0xb0]
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0xb4]
xor esi, esi
test eax, eax
mov byte [esp + 0x180], 0x1d
jle 0x56dea3
mov ecx, esi
mov edx, dword [esp + 0xb0]
imul ecx, dword [esp + 0xc0]
add ecx, edx
call fcn.00499a60
mov eax, dword [esp + 0xb4]
inc esi
cmp esi, eax
jl 0x56de7f
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0xb8]
call fcn.0049b180
lea ecx, [esp + 0xb0]
mov byte [esp + 0x180], 0x1a
call fcn.0049b170
lea ecx, [esp + 0xac]
mov byte [esp + 0x180], 9
call fcn.00499a60
lea ecx, [esp + 0x74]
mov byte [esp + 0x180], 8
call fcn.00499a60
lea ecx, [esp + 0x60]
mov byte [esp + 0x180], 7
call fcn.00499a60
lea ecx, [esp + 0x6c]
mov byte [esp + 0x180], 6
call fcn.00499a60
lea ecx, [esp + 0x68]
mov byte [esp + 0x180], 4
call fcn.00499a60
mov edi, dword [esp + 0x34]
xor esi, esi
cmp ebx, esi
je 0x56df31
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
cmp edi, esi
je 0x56df3e
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax + 0x48]
lea ecx, [esp + 0x7c]
mov byte [esp + 0x180], 3
call fcn.00499a60
lea ecx, [esp + 0x78]
mov byte [esp + 0x180], 2
call fcn.00499a60
lea ecx, [esp + 0x3c]
mov dword [esp + 0x180], 0xffffffff
call fcn.00499a60
mov eax, 1
mov ecx, dword [esp + 0x178]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x174
ret