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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x2d4
push ebx
mov ebx, ecx
mov eax, dword [ebx + 0x2ac]
test eax, eax
push esi
push edi
je 0x4143cc
mov eax, dword [ebx + 0x3cc]
test eax, eax
jne 0x4143cc
cmp byte [ebx + 0x378], 3
je 0x412dcd
call fcn.0040f980
test eax, eax
je 0x412dcd
mov al, byte [ebx + 0x378]
test al, al
je 0x4143cc
mov eax, dword [ebx + 0x17c]
test eax, eax
je 0x4143cc
mov ecx, dword [ebx + 0xc0]
test ecx, ecx
je 0x4143cc
mov eax, dword [ebx + 0xcc]
push eax
call fcn.0040dbf0
mov esi, eax
test esi, esi
mov dword [esp + 0x14], esi
je 0x4143cc
mov eax, dword [ebx + 0xd4]
test eax, eax
je 0x412e3b
mov ecx, dword [ebx + 0xd0]
push ecx
mov ecx, dword [ebx + 0xc0]
call fcn.0040dbf0
test eax, eax
je 0x412e49
mov edx, dword [ebx + 0xd8]
push eax
mov eax, dword [ebx + 0xc8]
push edx
push eax
mov ecx, esi
call fcn.00541c50
jmp 0x412e49
mov ecx, dword [ebx + 0xc8]
push ecx
mov ecx, esi
call fcn.005418b0
movzx eax, byte [ebx + 0x176]
cmp eax, 4
mov dword [esp + 0x10], 0x3f800000
ja case.default.0x412e5d
jmp dword [eax*4 + 0x4143d4]
mov dword [esp + 0x10], 0x3f75c28f
jmp case.default.0x412e5d
mov dword [esp + 0x10], 0x3f7ae148
jmp case.default.0x412e5d
mov dword [esp + 0x10], 0x3f800000
jmp case.default.0x412e5d
mov dword [esp + 0x10], 0x3f828f5c
jmp case.default.0x412e5d
mov dword [esp + 0x10], 0x3f851eb8
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 5
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 6
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 4
push 4
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 2
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 3
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 1
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0x12
push 1
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 2
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 3
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 5
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 3
push 6
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 3
push 4
push 1
push eax
call dword [ecx + 0x10c]
cmp byte [ebx + 0x279], 2
mov dword [esp + 0x18], 0
jae 0x412f9f
mov eax, dword [ebx + 0x27c]
test eax, eax
je 0x412fd0
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0x64ffffff
push 0x3c
push eax
mov dword [esp + 0x24], 1
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 0x1b
push eax
call dword [ecx + 0xe4]
jmp 0x413006
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 0x16
push eax
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0xffffffffffffffff
push 0x3c
push eax
call dword [ecx + 0xe4]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 0x1b
push eax
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0
push 0xf
push eax
call dword [ecx + 0xe4]
mov eax, dword [esp + 0x10]
push eax
push eax
push eax
mov ecx, 0x21f1c78
call fcn.0040dbd0
mov al, byte [ebx + 0x378]
test al, al
jne 0x413049
lea edx, [ebx + 0x28]
push edx
lea eax, [ebx + 0x1c]
push eax
lea ecx, [ebx + 0x10]
push ecx
mov ecx, 0x21f1c78
call fcn.00530ec0
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0x21f1cf8
push 3
push eax
call dword [edx + 0xb4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0x21f1cb8
push 2
push eax
call dword [ecx + 0xb4]
push 0x21f1cb8
push 0x21f1c78
lea edx, [esp + 0xe8]
push edx
call fcn.005d04b8
push 0x21f1cf8
mov ecx, 0x10
lea esi, [esp + 0xe4]
lea edi, [esp + 0x44]
lea eax, [esp + 0x44]
rep movsd dword es:[edi], dword [esi]
push eax
lea ecx, [esp + 0x128]
push ecx
call fcn.005d04b8
lea edx, [esp + 0x160]
push edx
lea eax, [esp + 0x224]
mov ecx, 0x10
lea esi, [esp + 0x124]
lea edi, [esp + 0x164]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.005d0709
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
lea edx, [esp + 0x224]
push edx
push 1
push eax
call dword [ecx + 0x178]
push 0x21f1c78
push 0
lea eax, [esp + 0x1e8]
push eax
call fcn.005d09de
mov ecx, dword [0x21f1d5c]
mov edx, dword [0x21f1d60]
mov eax, dword [0x21f1d64]
mov dword [esp + 0x80], ecx
lea ecx, [esp + 0x1e0]
mov dword [esp + 0x84], edx
push ecx
lea edx, [esp + 0x84]
mov dword [esp + 0x8c], eax
push edx
mov eax, edx
push eax
mov dword [esp + 0x98], 0
call fcn.005d0232
lea ecx, [esp + 0x80]
push ecx
mov edx, ecx
push edx
call fcn.005cff4f
fld dword [0x21f1d38]
fsub dword [ebx + 0x10]
fstp dword [esp + 0x24]
mov eax, dword [esp + 0x24]
fld dword [0x21f1d3c]
mov dword [esp + 0x30], eax
fsub dword [ebx + 0x14]
fstp dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
fld dword [0x21f1d40]
mov dword [esp + 0x34], ecx
fsub dword [ebx + 0x18]
fstp dword [esp + 0x2c]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x90], eax
lea eax, [esp + 0x1e0]
mov dword [esp + 0x94], ecx
push eax
lea ecx, [esp + 0x94]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x9c], edx
push ecx
mov edx, ecx
push edx
mov dword [esp + 0xa8], 0
call fcn.005d0232
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
lea edx, [esp + 0x84]
push edx
push 5
push eax
call dword [ecx + 0x178]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
lea edx, [esp + 0x94]
push edx
push 6
push eax
call dword [ecx + 0x178]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 0x21f1c78
push 0x55
push eax
call dword [ecx + 0x178]
push 0x21f1cb8
push 0
lea edx, [esp + 0x2a8]
push edx
call fcn.005d09de
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
lea edx, [esp + 0x2a4]
push edx
push 0x59
push eax
call dword [ecx + 0x178]
mov eax, dword [0x703a2c]
test eax, eax
je 0x4132e5
mov eax, dword [0x70360c]
mov cl, byte [eax + 0x1d0]
test cl, cl
je 0x4132e5
mov dword [esp + 0x30], 0x3f800000
mov dword [esp + 0x34], 0x3f800000
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0x3f800000
cmp dword [eax], 1
jne 0x4132b9
mov cl, byte [eax + 0x304]
test cl, cl
jne 0x4132b1
mov dword [esp + 0x34], 0xbf800000
mov dword [esp + 0x38], 0xbccccccd
jmp 0x4132b9
mov dword [esp + 0x38], 0x3d0f5c29
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
lea edx, [esp + 0x34]
push edx
push 0x5f
push eax
call dword [ecx + 0x178]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0
push 0x98
push eax
call dword [ecx + 0xe4]
mov ecx, dword [0x21f1fd8]
push 1
call fcn.00537230
mov edi, dword [esp + 0x18]
lea esi, [ebx + 0x58]
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], esi
cmp dword [esi], 0
mov ecx, dword [0x21f1fd8]
jne 0x413314
push 1
jmp 0x413316
push 2
call fcn.00537300
mov ecx, dword [esi + 0x3c]
test ecx, ecx
jne 0x413334
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push ecx
push ecx
push eax
call dword [edx + 0x104]
jmp 0x413355
call fcn.0052d0f0
cmp dword [esi], 0
je 0x413355
mov edx, dword [0x6f5cf4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0x104]
mov eax, dword [esi + 0x24]
test eax, eax
mov dword [esp + 0x10], eax
je 0x413790
mov ecx, dword [eax + 0x30]
xor esi, esi
test ecx, ecx
jle 0x4133f6
mov edi, 0xa
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x34]
test eax, eax
je 0x4143cc
movzx eax, byte [eax + esi]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 8]
mov edx, eax
imul edx, edx, 0x118
lea edx, [edx + ecx + 0xc0]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [ecx + 0x2c]
shl eax, 6
add eax, edx
push eax
lea edx, [esp + 0xe8]
push edx
call fcn.005d04b8
lea eax, [esp + 0xe0]
push eax
mov ecx, eax
push ecx
call fcn.005d0709
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 3
lea ecx, [esp + 0xe4]
push ecx
push edi
push eax
call dword [edx + 0x178]
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x30]
inc esi
add edi, 3
cmp esi, eax
jl 0x413376
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [0x21f1c70]
test ecx, ecx
mov ecx, dword [eax]
push 0
jne 0x4135a8
push 2
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 3
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 1
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 1
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 4
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 0x1b
push eax
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 0xf
push eax
call dword [ecx + 0xe4]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 1
push eax
call dword [edx + 0x104]
test edi, edi
jne 0x4134f2
fld dword [ebx + 0x2e0]
fcomp dword [0x6a8210]
fnstsw ax
test ah, 5
jnp 0x4134f2
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 5
push edi
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push edi
push 6
push edi
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 4
push edi
push eax
call dword [ecx + 0x10c]
jmp 0x413738
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 5
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 3
push 6
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 4
push 4
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 0x1b
push eax
call dword [ecx + 0xe4]
fld dword [ebx + 0x2e0]
fmul dword [0x6a8534]
mov esi, dword [0x21f1c70]
mov edi, dword [esi]
call fcn.005b8b18
shl eax, 0x18
or eax, 0xffffff
push eax
push 0x3c
push esi
call dword [edi + 0xe4]
mov edi, dword [esp + 0x18]
test edi, edi
je 0x413738
fld dword [ebx + 0x2e0]
fcomp dword [0x6a8530]
fnstsw ax
test ah, 0x41
jne 0x413738
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0x64ffffff
push 0x3c
push eax
call dword [edx + 0xe4]
jmp 0x413738
push 5
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 6
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 4
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 2
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0
push 3
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 4
push 1
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0x12
push 1
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 2
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 3
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 5
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 3
push 6
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 3
push 4
push 1
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0
push 0xf
push eax
call dword [ecx + 0xe4]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 0x1b
push eax
call dword [edx + 0xe4]
test edi, edi
jne 0x4136ca
fld dword [ebx + 0x2e0]
fcomp dword [0x6a8210]
fnstsw ax
test ah, 5
jp 0x413738
fld dword [ebx + 0x2e0]
mov eax, dword [0x21f1c70]
fmul dword [0x6a8534]
mov esi, dword [eax]
call fcn.005b8b18
mov ecx, dword [0x21f1c70]
shl eax, 0x18
or eax, 0xffffff
push eax
push 0x3c
push ecx
call dword [esi + 0xe4]
test edi, edi
je 0x413726
fld dword [ebx + 0x2e0]
fcomp dword [0x6a8530]
fnstsw ax
test ah, 0x41
jne 0x413726
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0x64ffffff
push 0x3c
push eax
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 0x1b
push eax
call dword [ecx + 0xe4]
mov edx, dword [0x21f1fd8]
mov eax, dword [edx + 4]
test eax, eax
jne 0x413783
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0x112
push eax
call dword [ecx + 0x164]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 1
push eax
call dword [edx + 0x104]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
push eax
mov ecx, esi
call fcn.0053ff20
mov ecx, esi
call fcn.00540930
jmp 0x41378c
mov ecx, dword [esp + 0x10]
call fcn.005408d0
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
inc eax
add esi, 4
cmp eax, 6
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], esi
jl 0x413305
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 5
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 6
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 4
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 2
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 2
push 3
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 4
push 1
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 1
push 1
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 4
push 1
push eax
call dword [edx + 0x10c]
fld dword [ebx + 0x2e0]
fcomp dword [0x6a8210]
push 0
fnstsw ax
test ah, 5
mov eax, dword [0x21f1c70]
jp 0x4138ae
mov ecx, dword [eax]
push 5
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 6
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 4
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 0x1b
push eax
call dword [edx + 0xe4]
push 0
jmp 0x4138bb
mov edx, dword [eax]
push 0x1b
push eax
call dword [edx + 0xe4]
push 1
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0xf
push eax
call dword [ecx + 0xe4]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 1
push eax
call dword [edx + 0x104]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 4
push 0
push eax
call dword [ecx + 0x10c]
mov ecx, dword [0x21f1fd8]
push 0
call fcn.00537230
mov eax, dword [ebx + 0xb8]
test eax, eax
mov ecx, 0x10
mov esi, 0x21f1c78
lea edi, [esp + 0xa0]
rep movsd dword es:[edi], dword [esi]
je 0x413999
mov eax, dword [0x703ab0]
test eax, eax
je 0x413999
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x413999
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 0x89
push eax
call dword [edx + 0xe4]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0x112
push eax
call dword [ecx + 0x164]
mov ecx, dword [ebx + 0xac]
test ecx, ecx
je 0x413969
push 0
call fcn.0052d120
mov edx, dword [esp + 0x14]
mov ecx, dword [ebx + 0xb8]
push edx
call fcn.0053ff20
mov ecx, dword [ebx + 0xb8]
call fcn.00540930
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 1
push 0x89
push eax
call dword [ecx + 0xe4]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 3
push 0x16
push eax
call dword [edx + 0xe4]
mov eax, dword [ebx + 0xdc]
cmp eax, 8
je 0x4139c2
cmp eax, 9
je 0x4139c2
mov ecx, ebx
call fcn.00411d10
mov esi, dword [esp + 0x14]
lea eax, [esp + 0xa0]
push eax
push esi
mov ecx, ebx
call fcn.00411f50
lea ecx, [esp + 0xa0]
push ecx
push esi
mov ecx, ebx
call fcn.004121f0
mov al, byte [ebx + 0x185]
cmp al, 0xb
mov byte [esp + 0x10], 1
je 0x4139f9
cmp al, 0x3b
jne 0x413a1a
cmp dword [ebx + 0xcc], 0x38
jne 0x413a1a
fld dword [ebx + 0xc8]
fcomp dword [0x6a852c]
fnstsw ax
test ah, 0x41
jne 0x413a1a
mov byte [esp + 0x10], 0
mov eax, dword [0x703a2c]
test eax, eax
je 0x413a4d
mov ecx, dword [0x70360c]
mov al, byte [ecx + 0x1d0]
test al, al
je 0x413a4d
call fcn.0052d650
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 0x98
push eax
call dword [edx + 0xe4]
mov al, byte [esp + 0x10]
test al, al
je 0x413b8e
cmp dword [ebx + 0xdc], 2
je 0x413a85
mov eax, dword [ebx + 0xe0]
test eax, eax
jne 0x413a80
mov eax, dword [ebx + 0xe4]
test eax, eax
jne 0x413a80
mov al, byte [ebx + 0x378]
test al, al
je 0x413a85
mov byte [esp + 0x10], 0
cmp dword [ebx + 0xcc], 0x74
jge 0x413b8e
mov al, byte [esp + 0x10]
test al, al
je 0x413b8e
xor ecx, ecx
mov dword [esp + 0x20], ecx
mov esi, dword [esp + 0x18]
test esi, esi
sete al
mov byte [esp + 0x10], al
mov eax, dword [ebx + ecx*4 + 0x74]
test eax, eax
je 0x413b7c
cmp ecx, 1
jne 0x413af3
mov eax, dword [ebx + 0x78]
mov cl, byte [eax + 0x4c]
cmp cl, 5
je 0x413aea
cmp cl, 0x31
je 0x413aea
cmp cl, 0x32
je 0x413aea
cmp cl, 0xf
je 0x413aea
cmp cl, 0x41
je 0x413aea
movzx edx, byte [ebx + 0x296]
jmp 0x413b49
movzx ecx, byte [ebx + 0x297]
jmp 0x413b14
movzx ecx, byte [eax + 0x4c]
add ecx, 0xfffffff3
cmp ecx, 0x33
ja case.0x413b06.15
movzx ecx, byte [ecx + 0x4143f0]
jmp dword [ecx*4 + 0x4143e8]
movzx ecx, byte [ebx + 0x295]
mov edx, dword [esp + 0x10]
push edx
mov edx, dword [ebx + 0xc8]
push ecx
push edx
mov edx, dword [ebx + 0xdc]
sub esp, 0x40
mov edi, esp
mov ecx, 0x10
lea esi, [esp + 0xec]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x60]
push ecx
push edx
jmp 0x413b75
movzx edx, byte [ebx + 0x294]
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [ebx + 0xc8]
push edx
mov edx, dword [esp + 0x1c]
push ecx
sub esp, 0x40
mov edi, esp
lea esi, [esp + 0xec]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0xdc]
push edx
push ecx
mov ecx, eax
call fcn.004277f0
mov ecx, dword [esp + 0x20]
inc ecx
cmp ecx, 2
mov dword [esp + 0x20], ecx
jl 0x413aa4
mov eax, dword [ebx + 0xb0]
test eax, eax
je 0x41435c
mov eax, dword [ebx + 0xb4]
test eax, eax
je 0x41435c
mov eax, dword [0x703ab0]
test eax, eax
je 0x41435c
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x41435c
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 0
push 0x89
push eax
call dword [edx + 0xe4]
fld dword [ebx + 0x2b4]
fcomp dword [0x6a8528]
fnstsw ax
test ah, 0x41
jne 0x413daa
mov eax, dword [ebx + 0xb0]
test eax, eax
je 0x413d47
xor eax, eax
mov dword [esp + 0x1c], eax
mov ecx, dword [ebx + 0xb0]
cmp byte [eax + ecx + 0x2c], 1
jne 0x413d47
mov esi, dword [eax + ecx + 0x34]
test esi, esi
mov ecx, dword [eax + ecx + 0x30]
mov dword [esp + 0x20], ecx
jl 0x413d35
test ecx, ecx
jl 0x413d35
mov edx, dword [ebx + 0xb0]
mov eax, dword [esp + 0x1c]
add eax, edx
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x7c], 0x3f800000
mov dword [esp + 0x68], 0x3f800000
mov dword [esp + 0x54], 0x3f800000
mov dword [esp + 0x40], 0x3f800000
mov ecx, dword [eax + 0x40]
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 0x38]
push ecx
push edx
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.005d0e4f
imul esi, esi, 0x118
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
lea esi, [esi + eax + 0xc0]
mov ecx, 0x10
lea edi, [esp + 0x160]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x160]
push ecx
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x128]
push eax
call fcn.005d04b8
mov ecx, 0x10
lea esi, [esp + 0x120]
mov edi, 0x21f1e74
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x20]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056eee0
mov eax, dword [esp + 0x1c]
add eax, 0x18
cmp eax, 0x1e0
mov dword [esp + 0x1c], eax
jl 0x413c03
mov ecx, 0x10
lea esi, [esp + 0xa0]
mov edi, 0x21f1c78
rep movsd dword es:[edi], dword [esi]
push 0x21f1c78
mov ecx, 0x21f1c78
call fcn.00530e20
mov ecx, dword [ebx + 0xac]
test ecx, ecx
je 0x413d7a
push 0
call fcn.0052d120
mov edx, dword [ebx + 0xbc]
mov ecx, dword [ebx + 0xb4]
push edx
call fcn.0056f190
mov ecx, dword [ebx + 0xbc]
test ecx, ecx
je 0x41430b
mov eax, dword [ecx + 4]
test eax, eax
je 0x41430b
jmp 0x414306
cmp dword [ebx + 0x250], 2
je 0x4140e4
mov eax, dword [ebx + 0xb0]
test eax, eax
je 0x413f46
xor eax, eax
mov dword [esp + 0x1c], eax
jmp 0x413dd0
mov ecx, dword [ebx + 0xb0]
cmp byte [eax + ecx + 0x2c], 1
jne 0x413f46
mov esi, dword [eax + ecx + 0x34]
test esi, esi
mov ecx, dword [eax + ecx + 0x30]
mov dword [esp + 0x20], ecx
jl 0x413f34
test ecx, ecx
jl 0x413f34
mov edx, dword [ebx + 0xb0]
mov eax, dword [esp + 0x1c]
add eax, edx
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x7c], 0x3f800000
mov dword [esp + 0x68], 0x3f800000
mov dword [esp + 0x54], 0x3f800000
mov dword [esp + 0x40], 0x3f800000
mov ecx, dword [eax + 0x40]
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 0x38]
push ecx
push edx
push eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.005d0e4f
imul esi, esi, 0x118
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
lea esi, [esi + eax + 0xc0]
mov ecx, 0x10
lea edi, [esp + 0x160]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x160]
push ecx
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x128]
push eax
call fcn.005d04b8
mov ecx, 0x10
lea esi, [esp + 0x120]
lea edi, [esp + 0x260]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0xa0]
push ecx
lea edx, [esp + 0x264]
push edx
lea eax, [esp + 0x1a8]
push eax
call fcn.005d04b8
mov ecx, 0x10
lea esi, [esp + 0x1a0]
mov edi, 0x21f1e74
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x20]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056eee0
mov eax, dword [esp + 0x1c]
add eax, 0x18
cmp eax, 0x1e0
mov dword [esp + 0x1c], eax
jl 0x413dd0
mov eax, dword [esp + 0x14]
mov ecx, 0x10
lea esi, [esp + 0xa0]
mov edi, 0x21f1e74
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 8]
lea edx, [esp + 0xa0]
push edx
add ecx, 0x520
push ecx
lea edx, [esp + 0x1a8]
push edx
call fcn.005d04b8
mov ecx, 0x10
lea esi, [esp + 0x1a0]
lea edi, [esp + 0xe0]
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0xe4]
push ecx
mov ecx, 0x21f1c78
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0x3f800000
call fcn.00531110
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x28]
push eax
call fcn.005cf7eb
fld dword [esp + 0x24]
fmul dword [0x6a75f8]
fst dword [esp + 0x24]
fld dword [esp + 0x28]
fmul dword [0x6a75f8]
fst dword [esp + 0x28]
mov eax, dword [esp + 0x28]
fld dword [esp + 0x2c]
fmul dword [0x6a75f8]
fstp dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov edx, ecx
fxch st(1)
push edx
fstp dword [0x21f1ee4]
mov dword [0x21f1eec], ecx
mov ecx, dword [esp + 0x28]
fstp dword [0x21f1ee8]
push eax
push ecx
mov ecx, 0x847328
call fcn.0053d2a0
call fcn.005b91d1
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
push ecx
mov ecx, 0x847328
fmul dword [0x6a7acc]
fmul dword [0x6a8524]
fstp dword [esp]
call fcn.0053d2c0
mov edx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x10]
push edx
push eax
push ecx
mov ecx, 0x7072a0
call fcn.0040dce0
fstp dword [0x21f1eb4]
mov edx, dword [esp + 0x14]
mov ecx, dword [ebx + 0xb4]
push edx
call fcn.0056ec30
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x14]
mov edx, dword [ebx + 0x10]
push eax
push ecx
mov ecx, dword [ebx + 0xb4]
push edx
call fcn.0056ee90
fld dword [ebx + 0x2b4]
fcomp dword [0x6a8520]
fnstsw ax
test ah, 0x41
jne 0x4140d0
mov eax, dword [0x703c14]
push 1
push eax
jmp 0x4140d9
mov ecx, dword [0x703c14]
push 0
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.00572020
mov ecx, 0x21f1c78
call fcn.00530dd0
mov ecx, dword [ebx + 0xac]
test ecx, ecx
je 0x4140ff
push 0
call fcn.0052d120
mov ecx, dword [ebx + 0xb4]
call fcn.0056ef50
mov eax, dword [ebx + 0xbc]
test eax, eax
je 0x41430b
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x41430b
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f6a0
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov edx, dword [esp + 0x14]
fstp dword [eax + 0x18]
mov dword [eax + 0x14], edx
fstp dword [eax + 0x1c]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [ebx + 0xb4]
lea edx, [esp + 0x1c]
push edx
call fcn.0056f760
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
fstp dword [eax + 0x24]
mov dword [eax + 0x20], ecx
fstp dword [eax + 0x28]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f700
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov edx, dword [esp + 0x14]
fstp dword [eax + 0x30]
mov dword [eax + 0x2c], edx
fstp dword [eax + 0x34]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [ebx + 0xb4]
lea edx, [esp + 0x1c]
push edx
call fcn.0056f7c0
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
fstp dword [eax + 0x3c]
mov dword [eax + 0x38], ecx
fstp dword [eax + 0x40]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f8c0
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov edx, dword [esp + 0x14]
fstp dword [eax + 0x48]
mov dword [eax + 0x44], edx
fstp dword [eax + 0x4c]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f910
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
fstp dword [eax + 0x54]
mov dword [eax + 0x50], ecx
fstp dword [eax + 0x58]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f820
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov edx, dword [esp + 0x14]
fstp dword [eax + 0x60]
mov dword [eax + 0x5c], edx
fstp dword [eax + 0x64]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [ebx + 0xb4]
lea edx, [esp + 0x1c]
push edx
call fcn.0056f870
fld dword [esp + 0x18]
mov eax, dword [ebx + 0xbc]
fld dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
fstp dword [eax + 0x6c]
mov dword [eax + 0x68], ecx
fstp dword [eax + 0x70]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [ebx + 0xb4]
call fcn.0056f960
fld dword [esp + 0x18]
fld dword [esp + 0x10]
mov eax, dword [ebx + 0xbc]
mov edx, dword [esp + 0x14]
fstp dword [eax + 0x78]
mov dword [eax + 0x74], edx
fstp dword [eax + 0x7c]
mov ecx, dword [ebx + 0xbc]
call fcn.005494c0
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 0
push 2
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 2
push 3
push 0
push eax
call dword [edx + 0x10c]
mov eax, dword [0x21f1c70]
mov ecx, dword [eax]
push 4
push 1
push 0
push eax
call dword [ecx + 0x10c]
mov eax, dword [0x21f1c70]
mov edx, dword [eax]
push 1
push 0x89
push eax
call dword [edx + 0xe4]
mov eax, dword [0x703a2c]
test eax, eax
je 0x41437a
mov ecx, dword [0x70360c]
mov al, byte [ecx + 0x1d0]
test al, al
je 0x41437a
call fcn.0052d5e0
mov eax, dword [ebx + 0x3d0]
test eax, eax
je 0x4143cc
push eax
mov ecx, 0x7072a0
call fcn.00446510
mov esi, eax
test esi, esi
je 0x4143cc
push ebx
mov ecx, esi
call fcn.004111d0
test eax, eax
je 0x4143cc
mov edi, dword [esi + 0x3cc]
mov ecx, esi
mov byte [esi + 0x378], 3
mov dword [esi + 0x3cc], 0
call fcn.00412d80
mov dword [esi + 0x3cc], edi
mov byte [esi + 0x378], 2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret