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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x218
mov esi, esp
mov dword [esi + 0x200], ebp
mov dword [esi + 0x204], esp
mov dword [esi + 0x210], 0xffffffff
mov dword [esi + 0x20c], 0x481600
lea eax, [esi + 0x208]
mov ecx, dword fs:[0]
mov dword [esi + 0x208], ecx
mov dword fs:[0], eax
mov eax, dword [0x69b710]
mov eax, dword [eax]
test eax, eax
je 0x478b44
lea eax, [esi + 0x10]
mov dword [esi + 0x10], 2
mov dword [esi + 0x20], 0
mov dword [esi + 4], eax
mov dword [esi + 0x210], 1
jmp 0x4788e5
lea ecx, [esi + 0x90]
mov dword [esi + 0x210], 1
call fcn.0047f9c0
push dword [ebp + 0x10]
call fcn.0051b6c0
add esp, 4
add eax, 0x64
push dword [ebp + 0xc]
push eax
lea eax, [esi + 0x148]
push eax
call fcn.00443cc0
add esp, 0xc
cmp byte [esi + 0x148], 9
je 0x478a6b
push 0xb8
lea eax, [esi + 0x148]
push eax
lea eax, [esi + 0x90]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [0x69b710]
mov eax, dword [eax]
test eax, eax
jne 0x4788d0
mov eax, dword [0x69acdc]
movzx eax, byte [eax + 8]
test al, al
je 0x4788d0
movzx ecx, al
cmp ecx, 1
je 0x478977
cmp ecx, 2
jne 0x478957
mov al, 2
jmp 0x478977
mov dword [esi + 0x210], 2
push dword [0x69acdc]
call fcn.0059e2f0
add esp, 4
test al, al
je 0x4788d0
mov ecx, dword [0x69acdc]
movzx eax, al
mov dword [esi + 0x210], 2
mov ecx, dword [ecx]
push eax
push ecx
call fcn.005313d0
add esp, 8
test al, al
je 0x4788d0
mov eax, dword [0x69acdc]
mov eax, dword [eax]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x478c60
mov ebx, dword [eax + 0x1c]
mov edx, dword [eax + 0x24]
mov edi, dword [eax + 0x28]
cmp ecx, 1
mov dword [esi + 0x2c], 0x609d10
mov dword [esi + 0x30], 1
mov dword [esi + 0x3c], 0
mov dword [esi + 0x34], 0x609d18
mov dword [esi + 0x38], 0
mov dword [esi + 0x68], ebx
mov dword [esi + 0x6c], ecx
mov dword [esi + 0x70], edx
mov dword [esi + 0x74], edi
mov dword [esi + 0x78], 0
je 0x478c4a
mov dword [esi + 0x7c], ebx
mov dword [esi + 0x80], ecx
mov dword [esi + 0x84], edx
mov dword [esi + 0x88], edi
lea edi, [esi + 0x44]
lea ecx, [eax + 0x1c]
mov dword [esi + 0x8c], 1
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], 2
mov dword [esi + 0x64], ecx
lea ecx, [esi + 0x90]
mov dword [esi + 0x28], ecx
lea ecx, [esi + 0x68]
mov dword [esi + 0x44], ecx
lea ecx, [esi + 0x2c]
mov dword [esi + 0x48], ecx
lea ecx, [esi + 0x7c]
mov dword [esi + 0x4c], 0x609d18
mov dword [esi + 0x50], ecx
lea ecx, [esi + 0x28]
mov dword [esi + 0x54], ecx
lea ecx, [esi + 0x5c]
mov dword [esi + 0x58], 0x609d28
push ecx
push eax
call fcn.00531b00
add esp, 8
jmp 0x4788d0
push dword [ebp + 0x10]
call fcn.0051b6c0
add esp, 4
mov dword [eax + 0xd8], 0
push dword [ebp + 0x10]
call fcn.0051b6c0
add esp, 4
mov ecx, dword [ebp + 8]
mov dword [eax + 0xd4], 0
cmp dword [ecx + 0x3c], 1
jne 0x478ac4
mov eax, dword [ebp + 0x10]
movq xmm1, qword [ecx + 0x40]
movq xmm0, qword [eax + 4]
pcmpeqd xmm1, xmm0
pshufd xmm0, xmm1, 0x50
movmskpd eax, xmm0
cmp eax, 3
jne 0x478ac4
mov dword [ecx + 0x3c], 2
cmp dword [esi + 0x10], 2
je 0x478b30
lea eax, [esi + 8]
mov dword [esi + 0x210], 0
push eax
push dword [esi + 4]
call fcn.00532270
add esp, 8
cmp dword [esi + 0x10], 2
je 0x478b30
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 8]
mov dword [esi + 0x210], 3
push ecx
push eax
push dword [esi + 4]
call fcn.005322a0
add esp, 0xc
mov eax, dword [esi + 0x10]
cmp eax, 2
je 0x478b30
test eax, eax
je 0x478b30
mov eax, dword [esi + 0x14]
lock dec dword [eax]
jne 0x478b30
lea eax, [esi + 0x14]
mov dword [esi + 0x210], 0xffffffff
push eax
call fcn.0042de60
add esp, 4
mov eax, dword [esi + 0x208]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [0x69acd8]
movzx eax, byte [edi + 8]
test al, al
je 0x4788a9
movzx ecx, al
cmp ecx, 1
je 0x478b69
cmp ecx, 2
jne 0x478c34
mov al, 2
movzx eax, al
push eax
push dword [edi]
call fcn.005313d0
add esp, 8
test al, al
je 0x4788a9
mov edi, dword [edi]
mov eax, dword [edi + 0x20]
test eax, eax
je 0x478c76
mov ecx, dword [edi + 0x1c]
movsd xmm0, qword [edi + 0x24]
lea ebx, [edi + 0x1c]
mov dword [esi + 0x90], ecx
mov dword [esi + 0x94], eax
movlpd qword [esi + 0x98], xmm0
mov dword [esi + 0xa0], 0
push dword [ebp + 0x10]
call fcn.0051b630
add esp, 4
add eax, 0xcc
mov dword [esi + 0x44], eax
lea eax, [esi + 0x90]
mov dword [esi + 0x148], eax
lea eax, [esi + 0x44]
mov dword [esi + 0x14c], eax
lea eax, [esi + 0x148]
mov dword [esi + 0x150], 0x609ce8
mov dword [esi + 0x2c], eax
mov dword [esi + 0x30], 1
mov dword [esi + 0x34], ebx
lea eax, [esi + 0x2c]
lea ebx, [esi + 8]
push eax
push edi
push ebx
call fcn.005310b0
add esp, 0xc
cmp dword [esi + 0x10], 2
lea eax, [esi + 0x10]
mov dword [esi + 4], eax
je 0x4788bd
mov dword [esi + 0x210], 0
push ebx
push eax
call fcn.00532240
add esp, 8
jmp 0x4788bd
push edi
call fcn.0059e2f0
add esp, 4
test al, al
jne 0x478b69
jmp 0x4788a9
push 0x609cf8
push 0x22
push 0x609c42
call fcn.005a0a40
add esp, 0xc
jmp 0x478c74
push 0x609cf8
push 0x22
push 0x609c42
call fcn.005a0a40
add esp, 0xc
ud2
push 0x609cd8
push 0x22
push 0x609c42
call fcn.005a0a40
add esp, 0xc
ud2