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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
mov ebx, edx
mov esi, ecx
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov eax, dword [0x567b10]
xor eax, ebp
mov dword [esp + 0x108], eax
mov dword [ecx], 2
mov dword [esi + 8], 0
movzx eax, word [edx + 0xc]
cmp ax, 3
jne 0x50f632
mov ecx, dword [edi + 0x188]
test ecx, ecx
je 0x50f60d
mov eax, dword [ecx]
call dword [eax + 0x10]
mov byte [edi + 0x1d8], 1
mov eax, dword [edi + 0x18]
mov byte [eax + 6], 1
nop dword [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
movzx eax, word [ebx + 0xc]
cmp ax, 4
je 0x50f620
mov dl, byte [ebp + 0xc]
lea ecx, [eax - 2]
movzx ecx, cx
cmp ecx, 0x91
ja case.0x50f647.1
jmp dword [ecx*4 + 0x560424]
test byte [ebx + 0xe], 0x20
mov dword [esp + 8], esi
je 0x50fdb7
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x3a2
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x50f682
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x50fd86
mov dword [esp + 0x10], ebx
mov esi, dword [ecx + 0x274]
imul ebx, eax, 0x34
mov dword [esp + 4], ecx
jmp 0x50f6ff
push edi
push ecx
call fcn.00533ac0
add esp, 8
mov edi, dword [ebp + 0x10]
mov ecx, dword [esp + 4]
mov dword [esi + ebx - 0xc], 0
mov dword [esi + ebx - 8], 0xf
mov byte [esi + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x50f83c
mov eax, dword [esi + ebx - 8]
cmp eax, 0x10
jb 0x50f6e1
mov ecx, dword [esi + ebx - 0x1c]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x50f6d0
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x511926
add eax, 0x24
mov edi, eax
mov ecx, edx
jmp 0x50f6d0
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x38f
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x50f757
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 4], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x50ff15
mov ecx, dword [esp + 4]
mov edi, dword [ecx + 0x274]
imul ebx, eax, 0x34
jmp 0x50f7c8
push esi
push ecx
call fcn.00533ac0
add esp, 8
mov dword [edi + ebx - 0xc], 0
mov dword [edi + ebx - 8], 0xf
mov byte [edi + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x50ff15
mov eax, dword [edi + ebx - 8]
cmp eax, 0x10
jb 0x50f7aa
mov ecx, dword [edi + ebx - 0x1c]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x50f7a0
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x511926
add eax, 0x24
mov esi, eax
mov ecx, edx
jmp 0x50f7a0
mov ecx, dword [esi + 0x18]
cmp ecx, 0x40
ja 0x50fcf6
movzx edx, ax
xor eax, eax
cmp edx, 0x93
sete al
neg cl
mov edx, 0xffffffff
shr edx, cl
test cl, 0x20
mov ecx, 0xffffffff
cmove edx, ecx
and edx, eax
movzx eax, dl
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], 0
jmp 0x50fd36
mov al, byte [ecx + 0xe4]
mov ebx, dword [esp + 0x10]
jmp 0x50fd88
cmp ax, 1
je 0x50fe58
add eax, 0xfffffff9
cmp ax, 0xc
jb 0x50fe58
mov ecx, dword [ebx + 8]
test ecx, ecx
je 0x50fe58
mov eax, dword [ecx + 0xc]
cmp dword [eax], 7
mov dword [esp + 4], ecx
jne 0x50f898
mov ecx, 0x69666564
xor ecx, dword [eax + 8]
mov edx, 0x64656e69
xor edx, dword [eax + 0xb]
or edx, ecx
mov ecx, dword [esp + 4]
mov dl, byte [ebp + 0xc]
je 0x51073f
test byte [ecx + 3], 0x20
jne 0x50fe58
mov dword [esp + 8], esi
test dl, dl
je 0x51159d
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x464
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x50f8d4
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
mov dword [esp + 0x10], ebx
je 0x5108fe
mov dword [esp + 0x14], ecx
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x50ff62
mov dword [esp + 8], esi
lea esi, [esp + 0xc8]
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0x40
mov byte [esp + 0x20], 0
lea eax, [esp + 0x20]
lea edx, [esp + 0xbc]
mov ecx, edi
push eax
push edx
push ebx
lea eax, [esp + 0x44]
push eax
call fcn.004c4a70
mov dl, 1
cmp byte [esp + 0x20], 0
jne 0x51058c
lea ecx, [esp + 0x60]
push dword [edi + 0x18]
push dword [edi + 0x20]
push dword [edi + 0x1c]
push dword [edi + 0x2c]
mov dword [esp + 0x20], ebx
push dword [ebx]
push dword [esp + 0x50]
push dword [esp + 0x50]
call fcn.004c8380
mov al, byte [esp + 0xb4]
mov dl, 1
test al, 1
jne 0x51165f
cmp byte [esp + 0x85], 0
jne 0x50f9b2
cmp byte [esp + 0x84], 0
je 0x50f9c0
cmp byte [esp + 0x87], 0
je 0x5100e6
test al, 0x40
jne 0x5100e6
cmp byte [esp + 0x86], 0
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
je 0x510bc3
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x3a2
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x50fa04
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x510b92
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
mov dword [esp + 4], ecx
jmp 0x510065
mov dword [esp + 8], esi
mov eax, dword [ebx]
mov dword [esp + 4], eax
nop dword [eax]
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fa50
movzx esi, byte [ebp + 0xc]
mov ecx, dword [esp + 8]
mov edx, ebx
push edi
push esi
push dword [ebp + 8]
call fcn.0050f5c0
add esp, 0xc
mov dl, 1
test al, al
jne 0x5105a5
cmp word [ebx + 0xc], 0x16
je 0x5100b5
mov eax, dword [ebp + 8]
add eax, 8
mov ecx, dword [esp + 8]
mov edx, 1
push edi
push eax
push esi
push ebx
call fcn.005119a0
add esp, 0x10
test al, al
je 0x5100a1
mov dl, 1
jmp 0x5105a5
mov eax, dword [ebx]
mov dword [esp + 4], eax
nop dword [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fac0
movzx eax, byte [ebp + 0xc]
mov ecx, esi
mov edx, ebx
push edi
push eax
push dword [ebp + 8]
call fcn.0050f5c0
add esp, 0xc
mov dl, 1
test al, al
jne 0x5105a5
mov eax, dword [esp + 4]
mov dword [esi], eax
mov dword [esi + 8], 0
jmp 0x50fd7f
mov eax, dword [ebx]
mov dword [esp + 4], eax
nop word cs:[eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fb10
movzx eax, byte [ebp + 0xc]
mov ecx, esi
mov edx, ebx
push edi
push eax
push dword [ebp + 8]
call fcn.0050f5c0
add esp, 0xc
mov dl, 1
test al, al
jne 0x5105a5
mov eax, dword [esp + 4]
mov dword [esi], eax
mov dword [esi + 8], 0
lea edi, [esi + 0x10]
lea eax, [esp + 0x60]
mov ecx, edi
push eax
call fcn.00513db0
cmp dword [esi + 0x18], 0x41
jb 0x50fb6f
mov eax, dword [edi]
test eax, eax
je 0x50fb6f
push eax
call fcn.00533f4a
add esp, 4
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
mov ecx, dword [esp + 0x68]
mov dword [esi + 0x18], ecx
mov bl, byte [esp + 0x70]
mov byte [esi + 0x20], bl
test bl, bl
jne 0x50fc60
mov dword [esp + 8], esi
lea ebx, [ecx - 1]
cmp ecx, 0x40
ja 0x5101be
mov esi, 1
xor edi, edi
mov ecx, ebx
shld edi, esi, cl
shl esi, cl
xor ecx, ecx
test bl, 0x20
cmovne edi, esi
cmovne esi, ecx
xor edx, edi
xor eax, esi
or eax, edx
sete al
mov esi, dword [esp + 8]
jmp 0x510203
mov dword [esp + 8], esi
mov eax, dword [ebx]
mov dword [esp + 4], eax
nop dword [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fbe0
movzx eax, byte [ebp + 0xc]
mov esi, dword [esp + 8]
mov ecx, esi
mov edx, ebx
push edi
push eax
push dword [ebp + 8]
call fcn.0050f5c0
add esp, 0xc
mov dl, 1
test al, al
jne 0x5105a5
mov eax, dword [esp + 4]
mov dword [esi], eax
mov dword [esi + 8], 0
lea edi, [esi + 0x10]
lea eax, [esp + 0x60]
mov ecx, edi
push eax
call fcn.00513e80
cmp dword [esi + 0x18], 0x41
jb 0x50fc43
mov eax, dword [edi]
test eax, eax
je 0x50fc43
push eax
call fcn.00533f4a
add esp, 4
movsd xmm0, qword [esp + 0x60]
mov ecx, dword [esp + 8]
movsd qword [ecx + 0x10], xmm0
mov eax, dword [esp + 0x68]
mov dword [ecx + 0x18], eax
mov al, byte [esp + 0x70]
mov byte [ecx + 0x20], al
mov eax, dword [ebp + 8]
mov dword [eax], 2
jmp 0x50fd7f
mov eax, dword [ebx]
mov dword [esp + 4], eax
nop word cs:[eax + eax]
nop
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fc80
movzx eax, byte [ebp + 0xc]
mov ecx, esi
mov edx, ebx
push edi
push eax
push dword [ebp + 8]
call fcn.0050f5c0
add esp, 0xc
mov dl, 1
test al, al
jne 0x5105a5
mov eax, dword [esp + 4]
mov dword [esi], eax
lea edi, [esi + 0x10]
mov ebx, dword [esi + 0x18]
cmp ebx, 0x40
ja 0x50ffc4
mov ecx, dword [edi]
xor edx, edx
or ecx, dword [edi + 4]
sete dl
neg bl
mov eax, 0xffffffff
mov ecx, ebx
shr eax, cl
test bl, 0x20
mov ecx, 0xffffffff
cmove eax, ecx
and eax, edx
movzx eax, al
mov dword [edi], eax
mov dword [edi + 4], 0
jmp 0x510005
movzx eax, ax
xor ecx, ecx
cmp eax, 0x93
sete cl
mov eax, dword [esi + 0x10]
mov dword [eax], ecx
mov dword [eax + 4], 0
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x18]
add ecx, 8
xor eax, eax
add edx, 0x3f
setb al
shld eax, edx, 0x1d
and eax, 0xfffffff8
add eax, 0xfffffff8
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, esi
mov byte [esi + 0x20], 0
mov eax, dword [ebx + 0xc]
mov esi, eax
add esi, 0xfffffff9
mov edx, 0
cmp si, 0xc
jb 0x50fd52
mov edx, dword [ebx + 8]
cmp ax, 1
mov eax, 0
cmove edx, eax
mov dword [ecx + 8], edx
mov eax, dword [ebx]
mov dword [ecx], eax
mov dword [ecx + 4], eax
nop dword [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x50fd70
xor edx, edx
jmp 0x5105a5
xor eax, eax
mov dword [ecx + 0x278], 0
movzx edx, al
mov byte [ecx + edx + 0xe5], 2
add al, 1
mov byte [ecx + 0xe4], al
mov dword [ecx + edx*4 + 0xf0], 0
push 0
call fcn.0045a620
lea esi, [esp + 0xc8]
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0x20
mov byte [esp + 0x5f], 0
lea eax, [esp + 0x5f]
lea edx, [esp + 0xbc]
mov ecx, edi
push eax
push edx
push ebx
lea eax, [esp + 0x60]
push eax
call fcn.004c4a70
mov dl, 1
cmp byte [esp + 0x5f], 0
jne 0x51058c
movzx eax, word [ebx + 0xc]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
add esi, edx
lea ecx, [esp + 0x60]
push eax
push edi
push dword [ebx]
push esi
push edx
call fcn.004c9fb0
cmp byte [esp + 0x6b], 0
setne dl
jne 0x51056b
mov dword [esp + 0x10], ebx
mov ebx, dword [edi + 0x20]
cmp byte [esp + 0x6a], 0
mov dword [esp + 4], edx
je 0x50ff90
mov eax, dword [ebx + 8]
mov eax, dword [eax + 4]
movzx eax, byte [eax + ebx + 0xc]
jmp 0x5103aa
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x393
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x50fe7e
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 4], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x50ff15
mov ecx, dword [esp + 4]
mov edi, dword [ecx + 0x274]
imul ebx, eax, 0x34
jmp 0x50feeb
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00533ac0
add esp, 8
mov dword [edi + ebx - 0xc], 0
mov dword [edi + ebx - 8], 0xf
mov byte [edi + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x50ff15
mov eax, dword [edi + ebx - 8]
cmp eax, 0x10
jb 0x50fed1
mov ecx, dword [edi + ebx - 0x1c]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x50fec7
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x50fec0
jmp 0x511926
mov ecx, dword [esp + 4]
mov dword [ecx + 0x278], 0
push 0
call fcn.0045a620
mov dl, 1
jmp 0x5105a5
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5107c5
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x50ff44
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x50ff3a
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x50ff31
jmp 0x511926
movzx eax, word [esp + 0x68]
cmp ax, 0xc
je 0x51038b
cmp ax, 0xb
je 0x510399
cmp ax, 9
jne 0x5105bf
mov eax, dword [ebx + 8]
mov eax, dword [eax + 4]
mov ecx, ebx
push dword [eax + ebx + 0x64]
jmp 0x5103a5
mov ecx, edi
call fcn.00446c20
xor ecx, ecx
cmp eax, ebx
sete cl
mov eax, dword [esi + 0x10]
mov dword [eax], ecx
mov dword [eax + 4], 0
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x18]
add ecx, 8
xor eax, eax
add edx, 0x3f
setb al
shld eax, edx, 0x1d
and eax, 0xfffffff8
add eax, 0xfffffff8
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov byte [esi + 0x20], 0
mov dword [esi + 8], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp eax, 1
je 0x510093
test eax, eax
jne 0x50fd7f
mov eax, dword [ebp + 8]
mov dword [eax], 1
jmp 0x50fd7f
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov ecx, dword [esp + 4]
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5108eb
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x510047
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510039
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x510030
jmp 0x511926
mov eax, dword [ebp + 8]
mov dword [eax], 0
jmp 0x50fd7f
cmp word [ebx + 0xc], 0x16
jne 0x5105cc
mov eax, dword [ebp + 8]
mov dword [eax], 2
mov eax, dword [ebx]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
mov dword [ecx], edx
mov dword [ecx + 4], eax
mov dword [ecx + 8], 0
nop dword [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
xor edx, edx
cmp word [ebx + 0xc], 4
je 0x5100d0
jmp 0x5105a5
mov ecx, dword [edi + 0x18]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x399
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x510110
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 4], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5101a2
mov ecx, dword [esp + 4]
mov edi, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x510178
mov ebx, edx
add eax, 0x24
mov edx, eax
mov ecx, ebx
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [edi + esi - 0xc], 0
mov dword [edi + esi - 8], 0xf
mov byte [edi + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5101a2
mov eax, dword [edi + esi - 8]
cmp eax, 0x10
jb 0x51015e
mov ecx, dword [edi + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510154
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x51014b
jmp 0x511926
mov ecx, dword [esp + 4]
mov dword [ecx + 0x278], 0
push 0
call fcn.0045a620
mov dl, 1
jmp 0x51165f
mov dword [esp + 0x10], ebx
mov esi, 1
xor edx, edx
mov ecx, ebx
shld edx, esi, cl
shr dword [esp + 0x10], 6
shl esi, cl
xor ecx, ecx
test bl, 0x20
cmovne edx, esi
cmovne esi, ecx
mov ecx, dword [esp + 0x10]
and edx, dword [eax + ecx*8 + 4]
and esi, dword [eax + ecx*8]
or esi, edx
mov esi, dword [esp + 8]
je 0x50fc60
mov ecx, edi
call fcn.00446fc0
cmp eax, ebx
sete al
test al, al
je 0x50fc60
cmp byte [ebp + 0xc], 0
je 0x50fc60
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 4]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x45d
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x510240
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
lea eax, [ecx + 0xe4]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], ecx
mov word [esp + 0x6c], 1
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 4], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5102f1
mov ecx, dword [esp + 4]
mov edi, dword [ecx + 0x274]
imul ebx, eax, 0x34
jmp 0x5102c7
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00533ac0
add esp, 8
mov esi, dword [esp + 8]
mov dword [edi + ebx - 0xc], 0
mov dword [edi + ebx - 8], 0xf
mov byte [edi + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x5102f1
mov eax, dword [edi + ebx - 8]
cmp eax, 0x10
jb 0x5102ad
mov ecx, dword [edi + ebx - 0x1c]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x51029f
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x510298
jmp 0x511926
mov eax, dword [esp + 4]
mov dword [eax + 0x278], 0
movsd xmm0, qword [esi]
movsd qword [esp + 0xbc], xmm0
lea eax, [esp + 0xbc]
lea ecx, [esp + 0x60]
push eax
call fcn.004e8a20
cmp byte [esp + 0x6c], 0
je 0x510342
mov ecx, dword [esp + 0x68]
movzx eax, byte [esp + 0x6d]
push eax
call fcn.0045a620
mov dword [esp + 0x68], 0
mov word [esp + 0x6c], 0
mov esi, dword [esp + 0x60]
test esi, esi
je 0x50fc60
mov eax, dword [esp + 0x64]
test eax, eax
je 0x50fc60
cmp eax, esi
ja 0x510aac
lea ecx, [eax + 0x2d40]
cmp ecx, esi
jb 0x510aac
mov ecx, dword [eax + 0x2d80]
lea edx, [ecx + 1]
mov dword [eax + 0x2d80], edx
mov dword [eax + ecx*4 + 0x2d40], esi
jmp 0x50fc60
mov eax, dword [ebx + 8]
mov eax, dword [eax + 4]
mov ecx, ebx
push dword [eax + ebx + 0x70]
jmp 0x5103a5
mov eax, dword [ebx + 8]
mov eax, dword [eax + 4]
mov ecx, ebx
push dword [eax + ebx + 0x6c]
call fcn.00528ea0
mov dword [esp + 0x40], eax
cmp eax, 0x40
ja 0x5103c5
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
jmp 0x5103d4
lea ecx, [esp + 0x38]
push 0
push 0
push 0
call fcn.00445a90
mov byte [esp + 0x48], 1
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x40]
cmp ecx, 0x40
ja 0x510414
neg cl
mov esi, 0xffffffff
shr esi, cl
xor edi, edi
test cl, 0x20
mov ecx, 0xffffffff
cmove edi, esi
cmove esi, ecx
and esi, edx
and edi, eax
mov dword [esp + 0x3c], edi
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x38], esi
jmp 0x510446
mov ecx, dword [esp + 0x38]
mov dword [ecx], edx
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x40]
add ecx, 8
xor eax, eax
add edx, 0x3f
setb al
shld eax, edx, 0x1d
and eax, 0xfffffff8
add eax, 0xfffffff8
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x68]
lea ecx, [eax - 0xb]
cmp cx, 2
jb 0x510488
cmp ax, 9
jne 0x510477
mov eax, dword [ebx + 8]
mov eax, dword [eax + 4]
push dword [eax + ebx + 0x64]
call fcn.00528ef0
add esp, 4
xor al, 1
mov byte [esp + 0x48], al
jmp 0x510488
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 0x24]
shr eax, 0x15
not al
and al, 1
mov byte [esp + 0x48], al
lea ebx, [esi + 0x10]
mov eax, dword [esi + 0x18]
cmp eax, dword [esp + 0x40]
jbe 0x5104d0
lea edx, [esp + 0x20]
lea ecx, [esp + 0x38]
push eax
push edx
call fcn.00513d40
cmp dword [esi + 0x18], 0x41
jb 0x5104b8
mov eax, dword [ebx]
test eax, eax
je 0x5104b8
push eax
call fcn.00533f4a
add esp, 4
movsd xmm0, qword [esp + 0x20]
movsd qword [esi + 0x10], xmm0
mov eax, dword [esp + 0x28]
mov dword [esi + 0x18], eax
mov al, byte [esp + 0x30]
jmp 0x51052c
cmp eax, 0x40
ja 0x51051c
mov eax, dword [esp + 0x40]
cmp eax, 0x40
ja 0x51051c
mov ecx, eax
neg cl
mov edx, 0xffffffff
shr edx, cl
xor esi, esi
test cl, 0x20
mov ecx, 0xffffffff
cmove esi, edx
cmove edx, ecx
and edx, dword [esp + 0x38]
mov ecx, dword [esp + 8]
mov dword [ecx + 0x18], eax
and esi, dword [esp + 0x3c]
mov eax, dword [esp + 8]
mov dword [eax + 0x10], edx
mov eax, dword [esp + 8]
mov dword [eax + 0x14], esi
mov esi, dword [esp + 8]
jmp 0x510528
lea eax, [esp + 0x38]
mov ecx, ebx
push eax
call fcn.00445bd0
mov al, byte [esp + 0x48]
mov byte [esi + 0x20], al
mov ecx, esi
mov esi, dword [esp + 0x10]
mov eax, dword [esi]
mov dword [ecx], eax
mov dword [ecx + 4], eax
nop dword [eax]
mov ecx, edi
push esi
call fcn.004c63d0
cmp word [esi + 0xc], 4
je 0x510540
cmp dword [esp + 0x40], 0x41
jb 0x510567
mov eax, dword [esp + 0x38]
test eax, eax
je 0x510567
push eax
call fcn.00533f4a
add esp, 4
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x6c]
lea ecx, [esp + 0x78]
cmp eax, ecx
je 0x510585
push eax
mov esi, edx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, esi
add esp, 4
lea esi, [esp + 0xc8]
mov eax, dword [esp + 0xbc]
cmp eax, esi
je 0x5105a5
push eax
mov esi, edx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, esi
add esp, 4
mov ecx, dword [esp + 0x108]
xor ecx, ebp
mov ebx, edx
call fcn.00533ace
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x40], 8
jmp 0x5103b3
mov eax, dword [ebx]
mov ecx, dword [edi + 0x18]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x38e
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x5105f2
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
lea eax, [ecx + 0xe4]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], ecx
mov word [esp + 0x6c], 1
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5106a1
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx + 0x274]
imul edi, eax, 0x34
jmp 0x510677
mov ebx, edx
add eax, 0x24
mov edx, eax
mov ecx, ebx
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [esi + edi - 0xc], 0
mov dword [esi + edi - 8], 0xf
mov byte [esi + edi - 0x1c], 0
add edi, 0xffffffcc
je 0x5106a1
mov eax, dword [esi + edi - 8]
cmp eax, 0x10
jb 0x51065d
mov ecx, dword [esi + edi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510653
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x51064a
jmp 0x511926
mov eax, dword [esp + 0x10]
mov dword [eax + 0x278], 0
mov eax, dword [esp + 8]
movsd xmm0, qword [eax]
movsd qword [esp + 0xbc], xmm0
lea eax, [esp + 0xbc]
lea ecx, [esp + 0x60]
push eax
call fcn.004e8a20
cmp byte [esp + 0x6c], 0
je 0x5106f6
mov ecx, dword [esp + 0x68]
movzx eax, byte [esp + 0x6d]
push eax
call fcn.0045a620
mov dword [esp + 0x68], 0
mov word [esp + 0x6c], 0
mov edi, dword [esp + 0x60]
test edi, edi
je 0x510ad1
mov eax, dword [esp + 0x64]
test eax, eax
je 0x510ad1
cmp eax, edi
ja 0x510ac1
lea ecx, [eax + 0x2d40]
cmp ecx, edi
jb 0x510ac1
mov ecx, dword [eax + 0x2d80]
lea edx, [ecx + 1]
mov dword [eax + 0x2d80], edx
mov dword [eax + ecx*4 + 0x2d40], edi
jmp 0x510ad1
mov eax, dword [ebx]
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov dword [esi], eax
mov al, byte [edi + 0x108]
mov esi, ebx
mov ebx, eax
and bl, 0x20
or al, 0x20
mov byte [edi + 0x108], al
mov ecx, edi
push esi
call fcn.004c63d0
movzx eax, byte [edi + 0x108]
and al, 0xdf
or al, bl
mov ebx, esi
mov byte [edi + 0x108], al
movzx ecx, word [esi + 0xc]
cmp cx, 4
je 0x510751
cmp cx, 0x15
jne 0x5107d8
mov ecx, dword [ebx]
mov dword [esp + 0xc], ecx
mov ebx, eax
and bl, 0x20
or al, 0x20
mov byte [edi + 0x108], al
mov ecx, edi
push esi
call fcn.004c63d0
movzx eax, byte [edi + 0x108]
and al, 0xdf
or al, bl
mov byte [edi + 0x108], al
movzx ecx, word [esi + 0xc]
cmp cx, 4
je 0x510791
mov ebx, esi
jmp 0x5107e0
mov ecx, dword [esp + 0x14]
mov al, byte [ecx + 0xe4]
mov ebx, dword [esp + 0x10]
jmp 0x510900
mov dword [esp + 0xc], 0
cmp cx, 3
jne 0x51083a
mov ecx, dword [edi + 0x188]
test ecx, ecx
je 0x5107f7
mov eax, dword [ecx]
push 0
call dword [eax + 0xc]
mov byte [edi + 0x1d8], 1
mov eax, dword [edi + 0x18]
mov byte [eax + 6], 1
mov al, byte [edi + 0x108]
mov ebx, eax
and bl, 0x20
or al, 0x20
mov byte [edi + 0x108], al
mov ecx, edi
push esi
call fcn.004c63d0
movzx eax, byte [edi + 0x108]
and al, 0xdf
or al, bl
mov ebx, esi
mov byte [edi + 0x108], al
cmp word [esi + 0xc], 4
je 0x51080b
mov ecx, edi
push 0
push 0
push ebx
call fcn.004d2bd0
mov dl, 1
test al, al
jne 0x5105a5
mov eax, dword [ebx + 0xc]
mov edx, eax
add edx, 0xfffffff9
xor ecx, ecx
cmp dx, 0xc
mov edx, 0
jb 0x510868
mov edx, dword [ebx + 8]
cmp ax, 1
cmove edx, ecx
lea eax, [esp + 0xbc]
mov ecx, edi
mov dword [esp + 0x1c], edx
push edx
push eax
call fcn.004c6200
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc4]
cmp edx, 3
seta cl
mov dword [esp + 0x18], eax
test eax, eax
setne bl
or bl, cl
mov ecx, dword [esp + 8]
lea eax, [ecx + 0x10]
mov dword [esp + 0x14], eax
mov ecx, dword [ecx + 0x18]
cmp ecx, 0x40
ja 0x510cad
neg cl
mov edi, 0xffffffff
shr edi, cl
test cl, 0x20
mov ecx, 0xffffffff
cmove edi, ecx
movzx ecx, bl
and edi, ecx
mov ebx, dword [esp + 0x14]
mov dword [ebx], edi
mov edi, dword [ebp + 0x10]
mov dword [ebx + 4], 0
mov eax, dword [esp + 0x18]
jmp 0x510cf9
mov al, byte [ecx + 0xe4]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
jmp 0x510b94
xor eax, eax
mov dword [ecx + 0x278], 0
movzx edx, al
mov byte [ecx + edx + 0xe5], 5
add al, 1
mov byte [ecx + 0xe4], al
mov eax, dword [esp + 4]
mov dword [ecx + edx*4 + 0xf0], eax
push 0
call fcn.0045a620
mov esi, dword [edi + 0x18]
mov ecx, dword [esi + 0x1c]
push esi
push dword [ebx]
push 0x464
call fcn.00458b30
cmp eax, 1
jne 0x51159d
mov eax, dword [esi + 0x20]
add eax, 0x68
lea ecx, [esp + 0x38]
push eax
call fcn.004674d0
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
cmp esi, ebx
je 0x511590
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov edx, dword [eax]
add eax, 8
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], ebx
jmp 0x51098c
add esi, 0x18
cmp ebx, esi
je 0x511590
cmp dword [esi + 0x14], 0xf
mov eax, esi
jbe 0x510996
mov eax, dword [esi]
mov ecx, dword [esi + 0x10]
cmp edx, ecx
jb 0x510981
test ecx, ecx
je 0x5109bb
push ecx
push eax
push dword [esp + 0x14]
mov ebx, edx
call sub.VCRUNTIME140.dll_memcmp
mov edx, ebx
mov ebx, dword [esp + 0x20]
add esp, 0xc
test eax, eax
jne 0x510981
mov ecx, dword [edi + 0x18]
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x465
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x5109e5
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
lea eax, [ecx + 0xe4]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], ecx
mov word [esp + 0xc8], 1
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 0x14], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x510d8f
mov ecx, dword [esp + 0x14]
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x510a7e
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x510d8f
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x510a60
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510a56
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x510a4d
jmp 0x511926
mov ecx, esi
call fcn.00454310
push esi
call fcn.00533f45
add esp, 4
jmp 0x50fc60
mov ecx, edi
call fcn.00454310
push edi
call fcn.00533f45
add esp, 4
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 4]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x59
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x510afc
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5114f0
mov dword [esp + 4], ecx
mov edi, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x510b68
mov ebx, edx
add eax, 0x24
mov edx, eax
mov ecx, ebx
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [edi + esi - 0xc], 0
mov dword [edi + esi - 8], 0xf
mov byte [edi + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5114e4
mov eax, dword [edi + esi - 8]
cmp eax, 0x10
jb 0x510b4a
mov ecx, dword [edi + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510b40
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x510b37
jmp 0x511926
xor eax, eax
mov dword [ecx + 0x278], 0
movzx edx, al
mov byte [ecx + edx + 0xe5], 2
add al, 1
mov byte [ecx + 0xe4], al
mov dword [ecx + edx*4 + 0xf0], 1
push 0
call fcn.0045a620
mov eax, dword [edi + 0x1c]
mov eax, dword [eax]
test al, 1
jne 0x510fce
test byte [esp + 0xb4], 8
je 0x510fce
test eax, 0x100
jne 0x510ef0
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x48
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x510c0f
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 0xc], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x510fb1
mov ecx, dword [esp + 0xc]
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x510c7f
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 4]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x510fb1
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x510c61
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510c57
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 4], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x510c4e
jmp 0x511926
movzx eax, bl
mov edx, dword [esp + 8]
mov ecx, dword [edx + 0x10]
mov dword [ecx], eax
mov dword [ecx + 4], 0
mov ecx, dword [edx + 0x10]
mov edx, dword [edx + 0x18]
add ecx, 8
xor eax, eax
add edx, 0x3f
setb al
shld eax, edx, 0x1d
and eax, 0xfffffff8
add eax, 0xfffffff8
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc4]
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov byte [ecx + 0x20], 0
cmp edx, 4
setb cl
test eax, eax
sete al
and al, cl
mov ecx, dword [ebp + 8]
mov byte [ecx + 8], al
mov dword [esp + 0x68], 0x40
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov byte [esp + 0x70], 0
lea eax, [esp + 0x60]
push eax
push ebx
call fcn.00514060
add esp, 8
mov ebx, eax
cmp dword [esp + 0x68], 0x41
jb 0x510d59
mov eax, dword [esp + 0x60]
test eax, eax
je 0x510d59
push eax
call fcn.00533f4a
add esp, 4
test ebx, ebx
mov ebx, esi
je 0x511261
cmp byte [ebp + 0xc], 0
je 0x511261
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x511234
mov ecx, dword [esp + 0xc0]
mov eax, dword [ecx + eax*4 - 4]
mov eax, dword [eax + 8]
jmp 0x511259
mov eax, dword [esp + 0x14]
mov dword [eax + 0x278], 0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
sub esp, 0x18
mov dl, byte [esp + 0x38]
mov byte [esp + 0x14], dl
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
lea esi, [esp + 0x78]
mov dword [esp], esi
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0x554de5
call fcn.00405c60
add esp, 0x18
mov eax, dword [esp + 0x70]
cmp dword [esp + 0x74], 0xf
jbe 0x510de6
mov esi, dword [esp + 0x60]
lea ecx, [esp + 0xbc]
push eax
push esi
call fcn.00513f40
mov eax, dword [esp + 0xbc]
test eax, eax
jne 0x510e12
mov ecx, dword [esp + 0xc0]
call fcn.00454700
mov dword [esp + 0xbc], eax
movzx ecx, byte [eax]
mov byte [eax + ecx + 1], 5
mov eax, dword [esp + 0xbc]
movzx ecx, byte [eax]
mov edx, ecx
add dl, 1
mov byte [eax], dl
mov edx, dword [esp + 4]
mov dword [eax + ecx*4 + 0xc], edx
mov eax, dword [esp + 0x74]
cmp eax, 0x10
jb 0x510e6d
mov ecx, dword [esp + 0x60]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x510e63
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x511926
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00533ac0
add esp, 8
cmp byte [esp + 0xc8], 0
je 0x510ea1
mov ecx, dword [esp + 0xc4]
movzx eax, byte [esp + 0xc9]
push eax
call fcn.0045a620
mov dword [esp + 0xc4], 0
mov word [esp + 0xc8], 0
mov ebx, dword [esp + 0xbc]
test ebx, ebx
je 0x511590
mov eax, dword [esp + 0xc0]
test eax, eax
je 0x511590
cmp eax, ebx
ja 0x511580
lea ecx, [eax + 0x2d40]
cmp ecx, ebx
jb 0x511580
mov ecx, dword [eax + 0x2d80]
lea edx, [ecx + 1]
mov dword [eax + 0x2d80], edx
mov dword [eax + ecx*4 + 0x2d40], ebx
jmp 0x511590
shr eax, 4
and eax, 0x20
or eax, 0x4b
mov edx, dword [edi + 0x18]
mov ecx, dword [ebx]
mov dword [edx + 0xdc], ecx
mov dword [edx + 0xe0], eax
lea eax, [edx + 0xc4]
cmp dword [edx + 0xd8], 0x10
jb 0x510f1b
mov eax, dword [eax]
mov dword [edx + 0xd4], 0
mov byte [eax], 0
mov byte [edx + 0xe4], 0
mov dword [edx + 0x20c], 0
mov dword [esp + 0xc], edx
mov eax, dword [edx + 0x278]
test eax, eax
je 0x510fb1
mov ecx, dword [esp + 0xc]
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x510f83
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 4]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x510fb1
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x510f69
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x510f5f
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 4], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x510f56
jmp 0x511926
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x278], 0
push 0
call fcn.0045a620
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
lea eax, [esi + 0x10]
lea ecx, [esp + 0x60]
mov dword [esp + 4], eax
push eax
call fcn.004c9ba0
test al, al
je 0x5110b5
cmp byte [ebp + 0xc], 0
je 0x511643
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x17
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x511017
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5111fe
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
mov dword [esp + 4], ecx
jmp 0x511087
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov ecx, dword [esp + 4]
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5111ee
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x511069
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x51105b
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x511052
jmp 0x511926
mov al, byte [esp + 0xb4]
and al, 2
mov ecx, eax
shr cl, 1
mov byte [esi + 0x20], cl
test al, al
jne 0x511647
mov eax, dword [esi + 0x18]
lea ecx, [eax - 1]
mov edx, ecx
shr edx, 3
and edx, 0xfffffff8
add edx, dword [esi + 0x10]
cmp eax, 0x41
cmovb edx, dword [esp + 4]
mov eax, 1
xor edi, edi
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, edi
cmovne ecx, eax
mov edi, 0
cmovne eax, edi
mov edi, dword [ebp + 0x10]
and ecx, dword [edx + 4]
and eax, dword [edx]
or eax, ecx
je 0x511647
cmp byte [ebp + 0xc], 0
je 0x51163f
cmp dword [esp + 0x80], 0xa
jne 0x51163f
mov ecx, dword [edi + 0x18]
mov eax, dword [ebx]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x4d
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x511150
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov dword [esp + 0xc], ecx
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x511626
mov ecx, dword [esp + 0xc]
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x5111c0
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 4]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x511626
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x5111a2
mov ecx, dword [ebx + esi - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x511198
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 4], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x51118f
jmp 0x511926
mov al, byte [ecx + 0xe4]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
jmp 0x511200
xor eax, eax
mov dword [ecx + 0x278], 0
movzx edx, al
mov byte [ecx + edx + 0xe5], 2
add al, 1
mov byte [ecx + 0xe4], al
mov dword [ecx + edx*4 + 0xf0], 1
push 0
call fcn.0045a620
jmp 0x511643
mov ecx, dword [esp + 0xbc]
and ecx, 0xfffffffc
je 0x511257
lea eax, [esp + 0x60]
push eax
call fcn.0050ed10
mov eax, dword [esp + 0x60]
test eax, eax
je 0x511257
mov eax, dword [eax + 0xc]
jmp 0x511259
xor eax, eax
mov ecx, edi
push eax
call fcn.004e8950
movups xmm0, xmmword [ebx]
movaps xmmword [esp + 0x60], xmm0
mov eax, dword [ebx]
mov ecx, dword [esp + 8]
mov dword [ecx + 4], eax
cmp dword [esp + 0xc], 0
je 0x5112d1
mov al, byte [edi + 0x108]
mov ebx, eax
and bl, 0x20
or al, 0x20
mov byte [edi + 0x108], al
mov ecx, edi
push esi
call fcn.004c63d0
movzx eax, byte [edi + 0x108]
and al, 0xdf
or al, bl
mov byte [edi + 0x108], al
movzx ecx, word [esi + 0xc]
cmp cx, 4
je 0x51127f
mov ebx, esi
cmp cx, 0x16
jne 0x511323
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x5112b7
mov eax, dword [ebx]
mov ecx, dword [esp + 8]
mov dword [ecx + 4], eax
jmp 0x5112e0
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x5112d1
cmp dword [esp + 4], 0
jns 0x511943
mov ecx, dword [edi + 0x2c]
mov eax, dword [esp + 4]
and eax, 0x7fffffff
mov edx, dword [ecx + 0x9c]
mov dword [esp + 8], edx
lea ebx, [edx + 1]
mov edx, ebx
mov dword [esp + 0x14], ebx
cmp ebx, 1
mov dword [esp + 0xc], eax
ja 0x51151f
mov eax, dword [ecx + 0x6c]
mov ebx, dword [esp + 8]
jmp 0x511534
mov eax, dword [ebx]
mov ecx, dword [edi + 0x18]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x389
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x511349
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5113e4
mov dword [esp + 4], ecx
mov ebx, dword [ecx + 0x274]
imul esi, eax, 0x34
jmp 0x5113ae
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.00533ac0
add esp, 8
mov edi, dword [ebp + 0x10]
mov dword [ebx + esi - 0xc], 0
mov dword [ebx + esi - 8], 0xf
mov byte [ebx + esi - 0x1c], 0
add esi, 0xffffffcc
je 0x5113d8
mov eax, dword [ebx + esi - 8]
cmp eax, 0x10
jb 0x511394
mov ecx, dword [ebx + esi - 0x1c]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x511387
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x511380
jmp 0x511926
mov ecx, dword [esp + 4]
mov al, byte [ecx + 0xe4]
jmp 0x5113e6
xor eax, eax
mov dword [ecx + 0x278], 0
movzx esi, al
mov byte [ecx + esi + 0xe5], 1
mov edx, eax
add dl, 1
mov dword [ecx + esi*4 + 0xf0], str.defined
movzx edx, dl
mov byte [ecx + edx + 0xe5], 4
add al, 2
mov byte [ecx + 0xe4], al
mov dword [ecx + edx*4 + 0xf0], 0x16
push 0
call fcn.0045a620
mov ecx, dword [edi + 0x18]
mov eax, dword [esp + 0xc]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x59
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x511458
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
je 0x5114f0
mov dword [esp + 4], ecx
mov edi, dword [ecx + 0x274]
imul ebx, eax, 0x34
jmp 0x5114ba
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00533ac0
add esp, 8
mov dword [edi + ebx - 0xc], 0
mov dword [edi + ebx - 8], 0xf
mov byte [edi + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x5114e4
mov eax, dword [edi + ebx - 8]
cmp eax, 0x10
jb 0x5114a0
mov ecx, dword [edi + ebx - 0x1c]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x511496
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jb 0x51148f
jmp 0x511926
mov ecx, dword [esp + 4]
mov al, byte [ecx + 0xe4]
jmp 0x5114f2
xor eax, eax
mov dword [ecx + 0x278], 0
movzx edx, al
mov byte [ecx + edx + 0xe5], 4
add al, 1
mov byte [ecx + 0xe4], al
mov dword [ecx + edx*4 + 0xf0], 0x15
jmp 0x50ff23
mov ebx, dword [esp + 8]
test ebx, ebx
js 0x51167a
lea eax, [ebx + ebx*4]
shl eax, 2
add eax, dword [ecx + 0x6c]
mov edx, 0x7fffffff
and edx, dword [eax]
mov eax, dword [esp + 0xc]
cmp edx, eax
mov edx, eax
jbe 0x51155d
lea eax, [esp + 0x20]
push edx
push eax
mov ebx, ecx
call fcn.00450cc0
mov ecx, ebx
mov eax, dword [esp + 0x20]
jmp 0x51173a
cmp ebx, 0xfffffffe
je 0x511730
mov eax, dword [esp + 0x14]
cmp eax, dword [ecx + 0x70]
jne 0x5116a7
cmp dword [ecx + 0x84], edx
jbe 0x511545
jmp 0x511730
mov ecx, ebx
call fcn.00454310
push ebx
call fcn.00533f45
add esp, 4
lea ecx, [esp + 0x38]
call fcn.00403f70
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
cmp dword [esi + 0x18], 0x40
ja 0x5115b7
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
jmp 0x5115ee
mov eax, dword [esi + 0x10]
mov dword [eax], 0
mov dword [eax + 4], 0
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x18]
add ecx, 8
xor eax, eax
add edx, 0x3f
setb al
shld eax, edx, 0x1d
and eax, 0xfffffff8
add eax, 0xfffffff8
push eax
push 0
push ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov eax, dword [esp + 4]
mov byte [esi + 0x20], 0
mov dword [esi + 8], eax
mov eax, dword [ebx]
mov dword [esi], eax
mov dword [esi + 4], eax
mov eax, dword [ebp + 8]
mov byte [eax + 8], 1
nop word [eax + eax]
mov ecx, edi
push ebx
call fcn.004c63d0
xor edx, edx
cmp word [ebx + 0xc], 4
je 0x511610
jmp 0x5105a5
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x278], 0
push 0
call fcn.0045a620
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 8]
mov byte [esi + 0x20], 1
mov eax, dword [ebx]
mov dword [esi], eax
mov dword [esi + 4], eax
mov ecx, edi
push ebx
call fcn.004c63d0
cmp word [ebx + 0xc], 4
je 0x51164e
xor edx, edx
mov eax, dword [esp + 0x88]
lea ecx, [esp + 0x94]
cmp eax, ecx
jne 0x510577
jmp 0x510585
mov eax, 0xfffffffe
sub eax, ebx
mov edi, eax
shr edi, 5
mov dword [esp + 0x18], ecx
mov edx, dword [ecx + 0x8c]
mov ecx, dword [edx + edi*4]
bt ecx, eax
jae 0x5116f4
lea eax, [eax + eax*4]
shl eax, 2
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 0x78]
jmp 0x511704
mov edi, edx
mov dword [esp + 0x18], ecx
cmp ebx, 0xfffffffe
jg 0x5116e1
mov eax, 0xfffffffd
sub eax, dword [esp + 8]
mov ecx, eax
shr ecx, 5
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x8c]
mov ecx, dword [edx + ecx*4]
bt ecx, eax
jae 0x51170c
lea eax, [eax + eax*4]
shl eax, 2
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 0x78]
jmp 0x511718
mov eax, dword [esp + 0x14]
lea eax, [eax + eax*4]
shl eax, 2
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 0x6c]
jmp 0x511718
mov edi, dword [esp + 0x18]
mov ecx, edi
push 0
push eax
call fcn.0044fcd0
mov ecx, edi
mov edi, dword [ebp + 0x10]
jmp 0x51131a
mov ecx, dword [esp + 0x18]
push 0
push eax
call fcn.0044fcd0
mov ecx, 0x7fffffff
and ecx, dword [eax]
mov edx, edi
cmp ecx, edi
mov edi, dword [ebp + 0x10]
mov ecx, dword [esp + 0x18]
jbe 0x511545
mov eax, dword [ecx + 0x9c]
mov dword [esp + 0x20], eax
lea edx, [eax + 1]
cmp edx, 1
ja 0x511747
mov eax, dword [ecx + 0x6c]
jmp 0x511788
test eax, eax
js 0x511756
lea eax, [eax + eax*4]
shl eax, 2
add eax, dword [ecx + 0x6c]
jmp 0x511788
mov edi, ecx
mov edx, 0xfffffffe
sub edx, eax
mov eax, edx
shr eax, 5
mov edi, dword [ecx + 0x8c]
mov eax, dword [edi + eax*4]
bt eax, edx
jae 0x51177d
lea eax, [edx + edx*4]
shl eax, 2
add eax, dword [ecx + 0x78]
jmp 0x511785
push 0
push edx
call fcn.0044fcd0
mov edi, dword [ebp + 0x10]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x51179f
mov eax, dword [eax + 0xc]
test eax, eax
cmove eax, ecx
cmp ecx, eax
jne 0x511869
mov ecx, dword [edi + 0x18]
mov eax, dword [esp + 4]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x447
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x5117c7
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
mov dword [esp + 0x14], ecx
je 0x51192c
mov ecx, dword [ecx + 0x274]
imul ebx, eax, 0x34
mov dword [esp + 8], ecx
jmp 0x51183b
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov ecx, dword [esp + 8]
mov dword [ecx + ebx - 0xc], 0
mov dword [ecx + ebx - 8], 0xf
mov byte [ecx + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x51192c
mov eax, dword [ecx + ebx - 8]
cmp eax, 0x10
jb 0x51181d
mov ecx, dword [ecx + ebx - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x51180f
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x511806
jmp 0x511926
mov ecx, dword [edi + 0x18]
mov eax, dword [esp + 4]
mov dword [ecx + 0xdc], eax
mov dword [ecx + 0xe0], 0x446
lea eax, [ecx + 0xc4]
cmp dword [ecx + 0xd8], 0x10
jb 0x511891
mov eax, dword [eax]
mov dword [ecx + 0xd4], 0
mov byte [eax], 0
mov byte [ecx + 0xe4], 0
mov dword [ecx + 0x20c], 0
mov eax, dword [ecx + 0x278]
test eax, eax
mov dword [esp + 0x14], ecx
je 0x51192c
mov ecx, dword [ecx + 0x274]
imul ebx, eax, 0x34
mov dword [esp + 8], ecx
jmp 0x5118fd
add eax, 0x24
mov edx, eax
mov ecx, dword [esp + 0xc]
push edx
push ecx
call fcn.00533ac0
add esp, 8
mov ecx, dword [esp + 8]
mov dword [ecx + ebx - 0xc], 0
mov dword [ecx + ebx - 8], 0xf
mov byte [ecx + ebx - 0x1c], 0
add ebx, 0xffffffcc
je 0x51192c
mov eax, dword [ecx + ebx - 8]
cmp eax, 0x10
jb 0x5118e3
mov ecx, dword [ecx + ebx - 0x1c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x5118d5
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
mov dword [esp + 0xc], edx
sub ecx, edx
cmp ecx, 0x20
jb 0x5118cc
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
mov ebx, esi
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x278], 0
push 0
call fcn.0045a620
mov ecx, dword [edi + 0x274]
test ecx, ecx
je 0x511981
mov eax, dword [ebx]
mov edx, dword [esp + 4]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], eax
mov eax, dword [ecx]
sub esp, 0x10
movsd xmm0, qword [esp + 0x48]
movsd qword [esp + 8], xmm0
lea edx, [esp + 0xcc]
mov dword [esp + 4], edx
lea edx, [esp + 0x70]
mov dword [esp], edx
call dword [eax + 0x74]
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov ecx, dword [esp + 0x1c]
mov dword [eax + 4], ecx
jmp 0x50fd7f