Function at 0x417cbc
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xf8
movzx eax, byte [ecx + 0x140]
mov edi, ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0xc], ecx
test eax, eax
je 0x417e15
cmp eax, 3
jne 0x41826b
lea eax, [edi + 0x13c]
mov dword [esp + 0x44], eax
movzx eax, byte [edi + 0x13c]
test eax, eax
je 0x417e3f
cmp eax, 3
jne 0x418287
lea eax, [edi + 0x138]
lea ecx, [edi + 0xd0]
mov dword [esp + 0x34], eax
movzx eax, byte [edi + 0x138]
mov dword [esp + 0x64], ecx
test eax, eax
je 0x418074
cmp eax, 3
jne 0x418296
lea eax, [edi + 0x134]
lea ecx, [edi + 0xd4]
mov dword [esp + 0x50], eax
movzx eax, byte [edi + 0x134]
mov dword [esp + 0x60], ecx
test eax, eax
je 0x418345
cmp eax, 3
jne 0x4182a5
lea eax, [edi + 0x131]
lea ecx, [edi + 0xdc]
mov dword [esp + 0x58], eax
movzx eax, byte [edi + 0x131]
mov dword [esp + 0x18], ecx
test eax, eax
je 0x418372
cmp eax, 3
jne 0x4182b4
lea eax, [edi + 0x11a]
mov dword [esp + 0x48], eax
movzx eax, byte [edi + 0x11a]
test eax, eax
je 0x418220
cmp eax, 3
jne 0x4182c3
lea eax, [edi + 0x10d]
lea ecx, [edi + 0xe4]
mov dword [esp + 0x30], eax
movzx eax, byte [edi + 0x10d]
mov dword [esp + 0x10], ecx
test eax, eax
je 0x418237
cmp eax, 3
jne 0x4182d2
movzx eax, byte [edi + 0x105]
lea ecx, [edi + 0x105]
test eax, eax
je 0x418484
cmp eax, 3
mov dword [esp + 0x4c], ecx
je 0x4184c3
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce80c
jmp 0x4182df
mov edx, dword [edi + 8]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi]
mov esi, dword [edi + 4]
lea ebx, [edi + 0x13c]
mov dword [esp + 0x44], ebx
mov dword [edi + 0x14], ecx
mov dword [edi + 0x18], esi
mov dword [edi + 0x1c], edx
mov dword [edi + 0x20], eax
mov byte [edi + 0x13c], 0
jmp 0x417e4b
mov edx, dword [edi + 0x1c]
mov eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x14]
mov esi, dword [edi + 0x18]
lea ebx, [esp + 0x68]
mov byte [edi + 0x13d], 0
mov dword [edi + 0x24], ecx
mov dword [edi + 0x28], esi
mov ecx, ebx
push eax
call fcn.0040e8cd
pop eax
mov eax, dword [ebx + 8]
lea esi, [edi + 0x2c]
mov dword [edi + 0x4c], eax
movsd xmm0, qword [ebx]
movsd qword [edi + 0x44], xmm0
and dword [edi + 0x2c], 0
push 0x14
push 0x40
call sub.KERNEL32.dll_LocalAlloc
test eax, eax
je 0x417ea5
mov edi, eax
push 1
push eax
call sub.ADVAPI32.dll_InitializeSecurityDescriptor
test eax, eax
jne 0x417ed4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
xor ebx, ebx
jmp 0x4180b5
lea edi, [esp + 0x20]
mov edx, 0x4e1144
mov ecx, edi
push 0x26
call fcn.0047a555
pop eax
cmp byte [edi], 4
jne 0x417ec3
mov edi, dword [esp + 0x24]
jmp 0x417ed4
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
cmp bl, 4
jne 0x4180b5
lea ebx, [esp + 0x38]
mov dword [esp + 8], esi
mov edx, 0x500c58
mov ecx, ebx
push 0
call fcn.0044362d
pop eax
cmp byte [ebx], 4
jne 0x418240
mov esi, dword [esp + 0x3c]
mov ecx, dword [0x4ce030]
mov dword [esp + 0x68], edi
and dword [esp + 0x38], 0
lea eax, [esp + 0x20]
mov word [eax + 4], 0x100
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], 0xc
mov dword [esp + 0x74], edi
and dword [esp + 0x78], 0
mov dword [eax], ecx
push ebx
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 1
push eax
call sub.ADVAPI32.dll_AllocateAndInitializeSid
test eax, eax
je 0x417fa8
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x38]
push 4
pop ecx
push 0x20
pop edx
call fcn.00407df2
test eax, eax
je 0x41827a
mov dword [eax], 0xc0000000
mov dword [eax + 4], 2
and dword [eax + 0xc], 0
and dword [eax + 8], 0
and dword [eax + 0x14], 0
and dword [eax + 0x10], 0
mov ebx, eax
mov dword [eax + 0x18], 5
mov dword [esp + 4], esi
mov dword [eax + 0x1c], esi
lea esi, [esp + 0x20]
mov edx, eax
mov ecx, esi
push 1
call fcn.0044362d
pop eax
cmp byte [esi], 4
jne 0x417fb7
mov esi, dword [esp + 0x24]
jmp 0x417fcb
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
xor ebx, ebx
jmp 0x4180a8
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
cmp al, 4
mov dword [esp + 0x14], eax
jne 0x41808f
mov ecx, dword [esp + 0x10]
call fcn.00443621
mov dword [esp + 0x6c], esi
push 0
push esi
push 1
push edi
call sub.ADVAPI32.dll_SetSecurityDescriptorDacl
test eax, eax
je 0x41807d
lea edi, [esp + 0x70]
xor edx, edx
mov ecx, dword [edi + 8]
mov eax, dword [edi - 8]
movsd xmm0, qword [edi]
mov esi, dword [edi - 4]
inc edx
mov dword [esp + 0xb8], ecx
mov ecx, ebx
mov dword [esp + 0x10], eax
movsd qword [esp + 0xb0], xmm0
call fcn.00443459
mov ecx, dword [esp + 4]
call fcn.0044365e
movsd xmm0, qword [esp + 0xb0]
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x10]
movsd qword [edi + 4], xmm0
mov dword [edi + 0xc], eax
mov dword [edi - 8], 1
mov dword [edi], esi
mov esi, dword [esp + 8]
mov dword [edi - 4], ecx
mov ecx, esi
call fcn.004435ee
movsd xmm0, qword [edi + 8]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [edi - 8]
movsd xmm1, qword [edi]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
jmp 0x4180cc
mov eax, dword [esp + 0x34]
jmp 0x41831a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov dword [esp + 0x14], 0
jmp 0x418091
mov edi, esi
xor edx, edx
mov ecx, ebx
inc edx
call fcn.00443459
mov ecx, dword [esp + 4]
call fcn.0044365e
mov ebx, dword [esp + 0x14]
lea ecx, [esp + 0x68]
call fcn.004435fc
mov esi, dword [esp + 8]
lea eax, [esp + 0x6c]
mov dword [eax], ebx
mov dword [eax + 4], edi
mov dword [eax - 4], 2
push eax
call fcn.00405b29
pop eax
push 9
pop ecx
lea eax, [esp + 0x68]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x74]
lea edi, [esp + 0xb0]
mov ebx, dword [esp + 0xc]
mov edx, dword [eax + 0x18]
lea ecx, [ebx + 0x50]
mov dword [esp + 8], ecx
mov ecx, dword [eax]
test ecx, ecx
cmove esi, ecx
mov ecx, edi
push esi
push 1
push dword [eax + 0x20]
call fcn.0044346d
add esp, 0xc
mov edi, dword [edi]
cmp edi, 2
jne 0x418182
movsd xmm0, qword [esp + 0xb4]
lea esi, [esp + 0x68]
lea edi, [ebx + 0x14]
movsd qword [ebx + 0x54], xmm0
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
call fcn.004a8f7f
mov ecx, esi
call fcn.004435ee
mov ecx, dword [esp + 8]
mov al, 1
mov dword [ebx + 0x50], 2
mov byte [ebx + 0x13d], al
call fcn.004052ad
mov byte [ebx + 0x13d], 0
mov ecx, dword [ebx + 0x24]
mov edx, dword [ebx + 0x28]
call fcn.004065e5
mov al, 1
mov ecx, edi
mov byte [ebx + 0x13c], al
call fcn.0040656a
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
call fcn.004448bb
mov cl, 1
xor eax, eax
jmp 0x4182e6
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xbc]
lea esi, [esp + 0x80]
mov dword [esp + 0x14], edx
mov edx, dword [esi]
mov dword [esp + 0x10], ecx
mov dword [esp + 4], eax
lea ecx, [ebx + 0x84]
push dword [esi + 8]
call fcn.00426e00
pop eax
mov eax, dword [esi + 8]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x10]
mov dword [ebx + 0x80], eax
mov eax, dword [esp + 0x14]
movsd xmm0, qword [esi]
movsd qword [ebx + 0x78], xmm0
movsd xmm0, qword [esi - 0x18]
movsd xmm1, qword [esi - 0x10]
movsd qword [ebx + 0x60], xmm0
movsd qword [ebx + 0x68], xmm1
movsd xmm0, qword [esi - 8]
movsd qword [ebx + 0x70], xmm0
mov dword [ebx + 0x58], eax
mov dword [ebx + 0x54], edx
mov dword [ebx + 0x5c], ecx
mov dword [ebx + 0x50], edi
lea edi, [ebx + 0x90]
mov byte [ebx + 0x13d], 0
push 0x10
pop ecx
mov esi, dword [esp + 8]
rep movsd dword es:[edi], dword [esi]
mov edi, ebx
jmp 0x4182f7
mov ecx, dword [edi + 0x110]
mov esi, dword [edi + 0x114]
mov al, byte [edi + 0x119]
jmp 0x4183ef
mov eax, dword [esp + 0x30]
jmp 0x418458
movsd xmm0, qword [esp + 0x38]
lea eax, [esp + 0x20]
movsd qword [eax], xmm0
push 0x16
pop edx
mov ecx, 0x4e116a
push 0x4e1180
push 0x4e1114
push eax
call fcn.004c8ad0
add esp, 0xc
ud2
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4cf38c
jmp 0x4182df
push 4
pop ecx
push 0x20
pop edx
call fcn.004c8580
ud2
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4cf39c
jmp 0x4182df
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce544
jmp 0x4182df
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce554
jmp 0x4182df
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce7dc
jmp 0x4182df
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce7ec
jmp 0x4182df
push 0x23
pop edx
mov ecx, 0x4ce500
push 0x4ce7fc
call fcn.004c88c0
jmp 0x4182f4
mov byte [ebx + 0x140], cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
pop eax
ud2
lea eax, [edi + 0x90]
lea ecx, [edi + 0xd0]
mov dword [edi + 0xd0], eax
mov dword [esp + 0x64], ecx
lea eax, [edi + 0x138]
mov byte [edi + 0x138], 0
mov edx, dword [edi + 0xd0]
lea ecx, [edi + 0xd4]
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], ecx
lea ecx, [edi + 0x134]
mov dword [esp + 0x50], ecx
mov dword [edi + 0xd4], edx
mov byte [edi + 0x134], 0
mov eax, dword [edi + 0xd4]
lea edx, [edi + 0x131]
lea ecx, [edi + 0xdc]
mov dword [esp + 0x58], edx
mov dword [esp + 0x18], ecx
mov dword [edi + 0xd8], eax
mov dword [edi + 0x12c], eax
mov byte [edi + 0x131], 0
mov byte [edi + 0x130], 0
mov esi, dword [edi + 0x12c]
mov ecx, esi
call fcn.004a463b
mov ebx, edi
add edi, 0x11c
mov edx, eax
mov ecx, edi
call fcn.00441b62
mov byte [ebx + 0x130], 1
cmp byte [ebx + 0x11c], 4
je 0x418403
mov ecx, edi
call fcn.004026ec
cmp al, 0xd
jne 0x418403
mov eax, dword [ebx + 0x11c]
mov ecx, dword [ebx + 0x120]
mov edi, ebx
mov dword [ebx + 0x124], eax
lea eax, [ebx + 0x11a]
mov dword [ebx + 0x128], ecx
mov dword [ebx + 0x110], esi
mov dword [ebx + 0x114], esi
mov word [ebx + 0x119], 2
mov ecx, esi
mov dword [esp + 0x48], eax
mov al, 2
mov dword [edi + 0xdc], ecx
mov byte [edi + 0x118], al
mov dword [edi + 0xe0], esi
jmp 0x418435
mov edi, dword [ebx + 0x120]
mov eax, dword [ebx + 0x11c]
mov ecx, dword [esp + 0x18]
mov word [ebx + 0x130], 0x100
mov esi, edi
mov ebx, eax
shld edi, eax, 0x18
shr esi, 8
cmp bl, 5
jne 0x418872
jmp 0x4186f0
lea edx, [edi + 0xe4]
mov dword [edi + 0x108], ecx
mov byte [edi + 0x10c], al
lea eax, [edi + 0x10d]
mov byte [edi + 0x10d], 0
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x108]
mov cl, byte [edi + 0x10c]
mov eax, dword [eax + 8]
mov dword [edi + 0x100], eax
mov byte [edi + 0x104], cl
lea ecx, [edi + 0x105]
mov byte [edi + 0x105], 0
mov eax, dword [edi + 0x100]
mov dword [esp + 0x4c], ecx
mov cl, byte [edi + 0x104]
mov dword [edi + 0xe4], eax
and dword [edi + 0xe8], 0
and dword [edi + 0xec], 0
and dword [edi + 0xf0], 0
xor eax, eax
mov byte [edi + 0xf8], cl
mov byte [edi + 0xf9], al
mov byte [edi + 0xfc], al
lea eax, [edi + 0xe8]
lea ebx, [edi + 0xf0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], ebx
mov eax, dword [eax]
mov dword [esp + 0x54], eax
movzx eax, byte [edi + 0xfc]
test eax, eax
je 0x418519
cmp eax, 1
jne 0x418608
mov esi, dword [edi + 0xe4]
add esi, 4
mov ecx, esi
call fcn.0040a4ae
cmp byte [edi + 0xf9], 0
mov al, 2
jne 0x4185f6
jmp 0x418666
mov eax, dword [edi + 0xe4]
mov edx, dword [eax]
movzx eax, byte [edi + 0xf8]
mov ecx, eax
and ecx, 1
lea ecx, [ecx + ecx*4]
mov edi, ecx
or edi, 0xa
test al, 2
cmove edi, ecx
lea eax, [edi - 0x80000000]
test edx, eax
jne 0x418640
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx]
lea esi, [eax + 4]
mov dword [esp + 8], eax
mov ecx, esi
call fcn.0040a4ae
mov eax, dword [ebx]
mov ebx, dword [eax]
mov eax, 0xffffffff
test ebx, ebx
cmovns eax, ebx
and eax, edi
jne 0x418712
test ebx, ebx
js 0x418712
mov ecx, dword [esp + 0x54]
mov eax, dword [ecx]
push dword [ecx + 4]
call dword [eax]
add esp, 4
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov ecx, dword [ebx]
test ecx, ecx
je 0x4185b2
push dword [edi + 0xf4]
mov dword [esp + 0x18], eax
mov ebx, edx
call dword [ecx + 0xc]
mov edx, ebx
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 8]
add esp, 4
mov ecx, dword [esp + 0x1c]
mov dword [edi + 0xf0], eax
mov dword [edi + 0xf4], edx
mov edx, dword [esp + 8]
mov dword [esp + 0x20], ecx
mov eax, dword [edx + 8]
cmp eax, ecx
je 0x418c2a
mov dword [edi + 0xec], eax
and dword [edi + 0xe8], 0
test eax, eax
je 0x4185e8
mov dword [eax], ecx
mov dword [edx + 8], ecx
mov al, 1
cmp dword [edx + 0xc], 0
jne 0x4185f6
mov dword [edx + 0xc], ecx
mov ecx, esi
mov byte [edi + 0xfc], al
call fcn.0040a4bd
jmp 0x4184e1
mov eax, dword [edi + 0xe4]
mov ebx, dword [eax]
mov eax, ebx
shr eax, 0x10
mov dword [esp + 4], eax
movzx eax, byte [edi + 0xf8]
mov ecx, eax
and ecx, 1
lea ecx, [ecx + ecx*4]
mov edx, ecx
or edx, 0xa
test al, 2
cmove edx, ecx
and edx, ebx
shr ebx, 0x1f
mov dword [esp + 8], edx
jmp 0x418734
mov ecx, dword [esp + 0xc]
mov eax, edx
and edi, edx
shr edx, 0x1f
shr eax, 0x10
mov dword [esp + 8], edi
mov ebx, edx
mov dword [esp + 4], eax
mov byte [ecx + 0xfc], 2
mov edi, ecx
jmp 0x418734
mov edi, dword [ebx]
mov edx, 0x4eea44
test edi, edi
cmovne edi, ebx
mov ecx, edi
call fcn.0044abf3
mov eax, dword [esp + 0x5c]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov eax, dword [eax]
mov edi, dword [eax]
mov ebx, dword [eax + 4]
push ebx
push edi
call fcn.004a35bd
pop ecx
pop edx
test al, al
jne 0x4186ce
push ebx
call dword [edi]
add esp, 4
mov ecx, eax
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov ebx, edx
mov eax, dword [eax]
test eax, eax
je 0x4186c2
push dword [edi + 0xf4]
mov dword [esp + 0xc], ecx
call dword [eax + 0xc]
mov ecx, dword [esp + 0xc]
add esp, 4
mov dword [edi + 0xf0], ecx
mov dword [edi + 0xf4], ebx
mov ecx, esi
call fcn.0040a4bd
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
mov al, 3
mov byte [ecx], al
mov byte [esi], al
mov byte [edx], al
mov eax, dword [esp + 0x58]
mov byte [eax], 3
mov eax, dword [esp + 0x50]
mov byte [eax], 3
mov eax, dword [esp + 0x34]
mov byte [eax], 3
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0xc]
mov cl, 3
mov byte [eax], 3
mov al, 1
jmp 0x4182e6
mov edi, dword [esp + 0xc]
mov dword [esp + 8], eax
mov eax, ebx
mov ecx, esi
shr ebx, 0x1f
shr eax, 0x10
mov dword [esp + 4], eax
mov byte [edi + 0xfc], 2
call fcn.0040a4bd
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.004063b3
movzx ecx, byte [esp + 4]
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], ecx
mov ecx, esi
mov byte [eax], 1
call fcn.0040541a
xor esi, esi
test bl, bl
mov dword [esp + 0x14], ebx
je 0x41877f
lea esi, [esp + 0x68]
mov ecx, esi
call fcn.004a4857
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov bl, byte [esi + 5]
movzx esi, word [esi + 6]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov byte [eax], 1
call fcn.00405443
movzx eax, bl
shl esi, 0x10
shl eax, 8
or eax, esi
movzx esi, byte [esp + 4]
or esi, eax
cmp byte [esp + 0x14], 0
jne 0x418810
mov eax, dword [esp + 8]
mov dword [esp + 0xb4], esi
mov dword [esp + 0xb0], eax
mov ecx, dword [edi + 0xe0]
call fcn.004a463b
lea esi, [esp + 0x68]
mov edx, eax
mov ecx, esi
call fcn.00441b62
cmp byte [esi], 4
je 0x41881c
lea ecx, [esp + 0x68]
call fcn.004026ec
cmp al, 0xd
jne 0x41881c
mov ecx, dword [edi + 0xdc]
lea edx, [esp + 0xb0]
call fcn.004a4657
lea ecx, [esp + 0x68]
call fcn.0043e8bd
mov ecx, dword [edi + 0xdc]
mov al, byte [edi + 0x118]
jmp 0x418435
mov ebx, dword [esp + 8]
mov edi, ebx
shrd edi, esi, 8
jmp 0x41882a
mov edi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x68]
mov esi, edi
shld edi, ebx, 0x18
shr esi, 8
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
cmp bl, 5
mov byte [eax], 1
je 0x4186e9
mov dword [esp + 0x18], ecx
call fcn.00405749
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0xc]
lea eax, [ebx + 0x124]
push eax
call fcn.00405b29
mov ecx, dword [esp + 0x1c]
add esp, 4
mov word [ebx + 0x130], 0x100
mov ebx, dword [esp + 8]
call fcn.00405425
cmp bl, 4
jne 0x4188b9
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x68]
mov eax, dword [ebx + 0xd8]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x28]
lea edi, [eax + 0x1c]
test ecx, ecx
cmove edi, ecx
mov ecx, esi
push edi
push 0
push dword [eax + 0x30]
call fcn.0044346d
add esp, 0xc
mov eax, dword [esi]
cmp eax, 2
jne 0x4188d1
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x70]
jmp 0x4188c5
shld esi, edi, 8
shl edi, 8
movzx ebx, bl
or ebx, edi
mov eax, dword [esp + 0x50]
mov byte [eax], 1
push 2
pop edi
jmp 0x418916
mov edx, dword [ebx + 0xd8]
mov ecx, dword [esp + 0x74]
movsd xmm0, qword [esp + 0x6c]
mov dword [esp + 4], ecx
mov ecx, dword [edx + 0xc]
mov edi, dword [edx]
mov ebx, dword [edx + 4]
mov esi, dword [edx + 8]
mov dword [edx], eax
movsd qword [edx + 4], xmm0
mov eax, dword [esp + 4]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
cmp edi, 3
mov dword [edx + 0xc], eax
mov byte [ecx + 0x134], 1
je 0x4186f7
mov ecx, dword [esp + 0x60]
call fcn.00406d8c
mov eax, dword [esp + 0x34]
cmp edi, 4
mov byte [eax], 1
je 0x4186fe
mov ecx, dword [esp + 0x64]
call fcn.00406d7d
lea eax, [esp + 0x24]
mov ecx, dword [esp + 8]
cmp edi, 2
mov dword [eax - 4], edi
mov edi, dword [esp + 0xc]
mov dword [eax + 4], esi
mov dword [eax], ebx
mov dword [eax + 8], ecx
je 0x418c1e
mov ecx, dword [edi + 0x24]
mov edx, dword [edi + 0x28]
call fcn.0040a3ed
mov esi, eax
mov edi, edx
mov edx, dword [0x53c13c]
mov eax, dword [0x53c138]
mov ebx, eax
mov ecx, edx
add ebx, 1
adc ecx, 0
lock cmpxchg8b qword [0x53c138]
jne 0x418972
movsd xmm0, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x28]
lea ebx, [esp + 0x38]
mov dword [ebx], eax
mov dword [ebx + 4], edx
movsd qword [esp + 0xb8], xmm1
movsd qword [esp + 0xb0], xmm0
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc4], edi
mov byte [esp + 0xe0], 0
mov dword [esp + 0xf0], ebx
call fcn.00408ed2
test eax, eax
mov dword [esp + 0x14], eax
je 0x418c45
mov ecx, eax
call fcn.00407489
cmp dword [eax], 2
movsd xmm0, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x28]
mov dword [esp + 0x10], esi
mov dword [esp + 4], edi
mov dword [esp + 8], edx
movsd qword [esp + 0x70], xmm1
movsd qword [esp + 0x68], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], edi
mov byte [esp + 0x98], 0
mov dword [esp + 0xa8], ebx
jne 0x418a32
lea ecx, [esp + 0x68]
call fcn.00405241
xor ebx, ebx
jmp 0x418be7
mov ecx, eax
add eax, 4
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
cmp dword [ecx], 0
je 0x418ae5
mov dword [esp + 0x1c], edi
mov edi, dword [eax]
lock inc dword [edi]
jle 0x418c69
push 0x40
pop edx
mov ecx, 0x80
call fcn.00407dd1
mov dword [eax], 0xcc
and dword [eax + 4], 0
mov dword [eax + 8], 0x4ce894
mov ebx, eax
and dword [eax + 0x14], 0
and dword [eax + 0x10], 0
mov dword [eax + 0x18], edi
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
mov dword [ebx + 0x20], esi
lea esi, [edi + 0x58]
mov dword [ebx + 0x24], eax
mov eax, dword [esp + 0x10]
movsd xmm0, qword [esp + 0x20]
movsd qword [ebx + 0x28], xmm0
movsd xmm0, qword [esp + 0x28]
movsd qword [ebx + 0x30], xmm0
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], ecx
mov byte [ebx + 0x58], 0
and dword [ebx + 0x68], 0
and dword [ebx + 0x6c], 0
and dword [ebx + 0x70], 0
mov ecx, esi
movsd xmm0, qword [edi + 0x50]
movsd qword [ebx + 0x10], xmm0
call fcn.0040a4ae
cmp byte [edi + 0x68], 0
je 0x418b9d
mov ecx, esi
jmp 0x418b85
mov dword [esp + 0x18], eax
mov eax, dword [eax]
mov dword [esp + 0x54], esi
mov dword [esp + 0x1c], eax
lock inc dword [eax]
jle 0x418c69
push 0x40
pop edx
mov ecx, 0x80
call fcn.00407dd1
mov esi, dword [esp + 0x1c]
mov dword [eax], 0xcc
and dword [eax + 4], 0
mov dword [eax + 8], 0x4ce86c
mov ebx, eax
and dword [eax + 0x14], 0
and dword [eax + 0x10], 0
mov ecx, dword [esp + 4]
mov dword [eax + 0x18], esi
mov dword [eax + 0x24], edi
mov eax, dword [esp + 0x54]
lea edi, [esi + 0x40]
mov dword [ebx + 0x20], eax
mov eax, dword [esp + 0x10]
movsd xmm0, qword [esp + 0x20]
movsd qword [ebx + 0x28], xmm0
movsd xmm0, qword [esp + 0x28]
movsd qword [ebx + 0x30], xmm0
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], ecx
mov byte [ebx + 0x58], 0
and dword [ebx + 0x68], 0
and dword [ebx + 0x6c], 0
and dword [ebx + 0x70], 0
mov ecx, edi
movsd xmm0, qword [esi + 0x38]
movsd qword [ebx + 0x10], xmm0
call fcn.0040a4ae
cmp byte [esi + 0x50], 0
je 0x418bc7
mov ecx, edi
call fcn.0040a4bd
mov ecx, ebx
call fcn.0040510a
mov eax, dword [ebx + 8]
push ebx
call dword [eax + 0x18]
add esp, 4
jmp 0x418be7
lea eax, [edi + 8]
add edi, 0x5c
mov edx, ebx
mov ecx, edi
mov dword [esp + 4], eax
call fcn.00408122
mov ecx, esi
call fcn.0040a4bd
mov ecx, dword [esp + 4]
mov edx, ebx
push 0
call fcn.004a5580
pop eax
jmp 0x418be7
mov ecx, dword [esp + 0x1c]
mov edx, ebx
add ecx, 0x44
call fcn.00408122
mov ecx, edi
call fcn.0040a4bd
mov ecx, dword [esp + 0x18]
mov edx, ebx
call fcn.004a5285
mov eax, dword [esp + 8]
mov edi, dword [esp + 0xc]
dec dword [eax]
test ebx, ebx
je 0x418c51
mov ecx, 0x84
mov eax, 0xcc
lock cmpxchg dword [ebx], ecx
je 0x418c0f
mov eax, dword [ebx + 8]
push ebx
call dword [eax + 0x10]
add esp, 4
cmp dword [esp + 0x20], 2
lea eax, [esp + 0x24]
jne 0x4182f7
push eax
call fcn.00405b29
pop eax
jmp 0x4182f7
lea eax, [esp + 0x68]
add edx, 8
and dword [eax], 0
mov ecx, edx
lea edx, [esp + 0x20]
push eax
call fcn.004cc81b
jmp 0x4182f4
lea ecx, [esp + 0xb0]
call fcn.00405241
cmp dword [esp + 0x14], 0
lea ecx, [esp + 0x68]
mov edx, 0x4cf3ac
sete byte [ecx]
call fcn.004078e4
ud2
ud2