Function at 0x404550
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fb860
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xc8
push ebx
push esi
push edi
push 0x180
mov dword [ebp - 0x10], ecx
call fcn.004b57fb
mov esi, eax
mov dword [ebp - 0x2c], esi
push 0x180
push 0
push esi
mov dword [ebp - 4], 0
call fcn.004cebf0
add esp, 0x10
mov ecx, esi
call fcn.004123c0
mov dword [esi + 0xf0], 0
lea eax, [esi + 0xf8]
mov dword [esi + 0xf4], 0
lea ecx, [eax + 8]
mov dword [ecx], 0
lea edi, [eax + 0x20]
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 7
mov dword [edi], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 7
mov dword [eax + 0x50], 0
mov dword [eax + 0x58], 0
mov dword [eax + 0x5c], 0
mov dword [eax + 0x60], 0
mov byte [eax + 0x64], 0
mov dword [esi + 0x160], 0
mov dword [esi + 0x164], 0
mov dword [esi + 0x168], 0
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x28], ecx
mov dword [esi + 0x170], 0
mov dword [esi + 0x174], 0
mov dword [esi + 0x178], 0
mov byte [esi + 0x17c], 0
mov dword [ebp - 0x14], esi
push 0x10
mov dword [ebp - 4], 1
call fcn.004b57fb
mov ebx, eax
xorps xmm0, xmm0
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], ebx
movq qword [ebx], xmm0
mov dword [ebx + 8], 0
mov dword [ebx + 4], 1
mov dword [ebx + 8], 1
mov dword [ebx], vtable.std::_Ref_count_struct_blackbone::ImageContext_.0
mov dword [ebx + 0xc], esi
sub esp, 0x14
mov dword [ebp - 4], 2
mov ecx, esp
push dword [ebp + 0xc]
call fcn.00409600
lea ecx, [ebp - 0x50]
call fcn.0040d6b0
add esp, 0x18
mov ecx, edi
push eax
call fcn.00409550
mov edx, dword [ebp - 0x3c]
cmp edx, 8
jb 0x4046f4
mov ecx, dword [ebp - 0x50]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4046ea
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4055ed
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, edi
lea ecx, [ebp - 0x50]
call fcn.0040cfe0
mov ecx, dword [ebp - 0x28]
push eax
call fcn.00409550
mov edx, dword [ebp - 0x3c]
cmp edx, 8
jb 0x404741
mov ecx, dword [ebp - 0x50]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404737
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4055f2
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x178], eax
test ecx, ecx
je 0x404765
mov al, byte [ebp + 0x18]
xor al, 1
movzx eax, al
push eax
push ecx
push ecx
mov ecx, esi
call fcn.004128e0
jmp 0x404775
shr eax, 0xf
mov ecx, esi
and al, 1
push eax
push dword [ebp + 0xc]
call fcn.00412710
mov edi, eax
test edi, edi
jns 0x404791
push 0
mov ecx, esi
call fcn.00412990
mov esi, dword [ebp + 8]
mov dword [esi], edi
or edi, 0xffffffff
jmp 0x404c36
or edi, 0xffffffff
test dword [ebp + 0x1c], 0x100
jne 0x404810
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax]
xor eax, eax
add ecx, 0x10
cmp byte [esi + 0xd], al
setne al
push eax
push 0
push dword [ebp + 0xc]
lea eax, [ebp - 0x18]
push eax
call fcn.0040d9c0
cmp dword [ebp - 0x18], 0
je 0x4047eb
push 0
mov ecx, esi
call fcn.00412990
mov esi, dword [ebp + 8]
or edi, edi
mov eax, dword [ebp - 0x18]
mov dword [esi], 0
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 8], eax
mov byte [esi + 0xc], 1
jmp 0x404c3a
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x404810
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404810
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x14]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404810
mov eax, dword [ecx]
call dword [eax + 4]
mov dl, byte [esi + 0xd]
mov ecx, dword [ebp - 0x10]
test dl, dl
jne 0x40483d
mov eax, dword [ecx]
mov eax, dword [eax + 8]
mov al, byte [eax + 0xd]
test al, al
jne 0x40483d
push 0
mov ecx, esi
call fcn.00412990
mov esi, dword [ebp + 8]
mov dword [esi], 0xc0000359
jmp 0x404c36
xor eax, eax
test dl, dl
setne al
mov dword [esi + 0x134], eax
mov eax, dword [ebp + 0x1c]
test al, 0x20
je 0x40485f
push dword [esi + 0x28]
push ecx
call fcn.00409080
jmp 0x404a56
test al, 0x10
je 0x404a56
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x24]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x28]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0
call fcn.00403970
mov dword [ebp + 0x18], eax
lea ecx, [ebp - 0x50]
xor eax, eax
mov dword [ebp - 0x50], 0
push eax
push 0x52ee5c
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 7
mov word [ebp - 0x50], ax
call fcn.00409830
mov ecx, dword [ebp + 0x18]
mov byte [ebp - 4], 3
cmp dword [ecx], 0
jle 0x4048c1
xor eax, eax
jmp 0x404923
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push 0x530800
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edx, eax
mov eax, dword [ebp + 0x18]
mov dword [ebp + 0xc], edx
mov ecx, dword [eax]
cmp edx, ecx
je 0x4048fe
test ecx, ecx
jle 0x4048fa
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0xc]
mov dword [eax], edx
mov ecx, edx
test ecx, ecx
jle 0x40490d
mov dword [eax + 4], 0
xor eax, eax
jmp 0x404923
sub esp, 0x18
lea eax, [ebp - 0x50]
mov ecx, esp
push eax
call fcn.00409600
mov ecx, dword [ebp + 0x18]
call fcn.0041f9a0
shr eax, 0x1f
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x3c]
mov dword [ebp + 0x18], eax
cmp edx, 8
jb 0x40496a
mov ecx, dword [ebp - 0x50]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40495d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4055f7
push edx
push ecx
call fcn.004b4fdc
mov eax, dword [ebp + 0x18]
add esp, 8
test al, al
je 0x404984
push 0
mov ecx, esi
call fcn.00412990
call fcn.00403970
mov eax, dword [eax + 4]
jmp 0x404c31
call fcn.00403970
mov ecx, dword [ebp - 0x10]
lea edx, [ebp - 0x18]
sub esp, 0xc
mov ecx, dword [ecx]
push edx
lea edx, [ebp - 0x24]
push edx
push dword [ecx + 4]
mov ecx, eax
call fcn.0041ffc0
test eax, eax
jns 0x4049e6
mov eax, dword [esi + 0x28]
xorps xmm0, xmm0
movlpd qword [ebp - 0x24], xmm0
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0
call fcn.00403970
mov ecx, dword [ebp - 0x10]
lea edx, [ebp - 0x18]
sub esp, 0xc
mov ecx, dword [ecx]
push edx
lea edx, [ebp - 0x24]
push edx
push dword [ecx + 4]
mov ecx, eax
call fcn.0041ffc0
mov dword [ebp + 0x18], eax
test eax, eax
js 0x404c25
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x38]
push 1
push 1
push 0x40
push dword [ebp - 0x18]
mov eax, dword [eax]
push dword [ebp - 0x20]
add eax, 0x58
push dword [ebp - 0x24]
push eax
call fcn.004174b0
mov ecx, dword [esi + 0xf0]
mov edx, eax
mov eax, dword [edx]
cmp ecx, eax
je 0x404a2e
mov dword [esi + 0xf0], eax
mov eax, dword [edx + 4]
mov dword [edx], ecx
mov ecx, dword [esi + 0xf4]
mov dword [esi + 0xf4], eax
mov dword [edx + 4], ecx
mov ecx, dword [ebp - 0x34]
mov dword [ebp + 0x18], ecx
test ecx, ecx
je 0x404a56
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404a56
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404a56
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esi + 0xf0]
test ecx, ecx
je 0x404a6b
mov eax, dword [ecx]
or eax, dword [ecx + 4]
jne 0x404b6d
mov eax, dword [ebp - 0x10]
push 1
push dword [esi + 0x24]
push dword [esi + 0x20]
mov ecx, dword [eax]
lea eax, [ebp - 0x48]
push 0x40
push dword [esi + 0x28]
add ecx, 0x58
push eax
call fcn.0041eab0
mov byte [ebp - 4], 4
cmp dword [ebp - 0x48], 0
jge 0x404b05
push 0
mov ecx, esi
call fcn.00412990
cmp byte [ebp - 0x3c], 0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x48]
mov dword [esi], eax
mov byte [esi + 0xc], 0
je 0x404ad6
mov ecx, dword [ebp - 0x40]
mov dword [ebp + 0x18], ecx
test ecx, ecx
je 0x404ad6
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404ad6
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404ad6
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
mov al, byte [ebp - 0x3c]
test al, al
je 0x4055fc
mov edx, dword [esi + 0xf0]
mov ecx, dword [ebp - 0x44]
cmp edx, ecx
je 0x404b3d
mov dword [esi + 0xf0], ecx
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x44], edx
mov ecx, dword [esi + 0xf4]
mov dword [esi + 0xf4], eax
mov al, byte [ebp - 0x3c]
mov dword [ebp - 0x40], ecx
jmp 0x404b40
mov ecx, dword [ebp - 0x40]
mov dword [ebp + 0x18], ecx
mov byte [ebp - 4], 2
test al, al
je 0x404b6d
test ecx, ecx
je 0x404b6d
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404b6d
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404b6d
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x404b7e
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x404b8c
xorps xmm0, xmm0
movlpd qword [ebp - 0x38], xmm0
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
mov dword [esi + 0xf8], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esi + 0xfc], eax
or ecx, 0x8000
mov eax, dword [esi + 0x28]
mov dword [esi + 0x130], eax
cmp dword [esi + 0x38], 0
cmovne ecx, dword [ebp + 0x1c]
mov dword [ebp + 0x1c], ecx
test ecx, 0x8000
jne 0x404bcd
mov ecx, dword [ebp - 0x10]
push esi
call fcn.00407bf0
mov dword [ebp + 0x18], eax
test eax, eax
js 0x404c25
sub esp, 8
lea ecx, [ebx + 4]
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.004056b0
mov dword [ebp + 0x18], eax
test eax, eax
js 0x404c25
sub esp, 8
lea ecx, [ebx + 4]
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.004058c0
mov dword [ebp + 0x18], eax
test eax, eax
jns 0x404c69
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp + 0x18]
mov esi, dword [ebp + 8]
mov dword [esi], eax
mov byte [esi + 0xc], 0
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov eax, dword [ecx + 0x3c]
mov dword [ebp + 0xc], eax
test dword [ebp + 0x1c], 0x100
push ecx
mov byte [ebp - 4], 5
push ecx
je 0x404cfa
lea eax, [ebp - 0xd4]
push eax
call fcn.0040fa60
mov esi, eax
push 0x60
mov byte [ebp - 4], 6
call fcn.004b57fb
xorps xmm0, xmm0
mov dword [ebp + 0x18], eax
add esp, 4
movq qword [eax], xmm0
mov dword [eax + 8], 0
mov dword [eax + 4], 1
mov dword [eax + 8], 1
mov dword [eax], vtable.std::_Ref_count_obj2_struct_blackbone::ModuleData_const__.0
add eax, 0x10
push esi
mov ecx, eax
mov dword [ebp + 0x10], eax
call fcn.0040ac60
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0xd4]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x34], eax
call fcn.00405610
jmp 0x404ded
mov eax, dword [ebp - 0x10]
mov esi, dword [eax]
lea eax, [ebp - 0xd4]
push eax
call fcn.0040fa60
lea eax, [ebp - 0xcc]
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp - 0x84]
call fcn.00409600
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x6c], eax
lea edx, [ebp - 0xd4]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x18]
call fcn.00410510
push eax
lea eax, [ebp - 0x84]
mov byte [ebp - 4], 9
push eax
lea eax, [ebp - 0x40]
push eax
lea ecx, [esi + 0x1c]
call fcn.004105d0
mov eax, dword [eax]
mov esi, dword [eax + 0x28]
mov dword [ebp + 0x18], esi
test esi, esi
je 0x404d6a
lock inc dword [esi + 4]
mov esi, dword [eax + 0x28]
mov dword [ebp + 0x18], esi
mov ecx, dword [ebp - 0x14]
mov eax, dword [eax + 0x24]
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x1c], ecx
test ecx, ecx
je 0x404d98
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404d98
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp - 0x1c]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404d98
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x70]
cmp edx, 8
jb 0x404dd9
mov ecx, dword [ebp - 0x84]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404dcf
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405601
push edx
push ecx
call fcn.004b4fdc
add esp, 8
lea ecx, [ebp - 0xd4]
call fcn.00405610
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], esi
test dword [ebp + 0x1c], 0x20000
jne 0x404e21
cmp dword [ebp + 0xc], 1
jne 0x404e21
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov eax, dword [eax + 8]
cmp byte [eax + 0xc], 0
je 0x404e21
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], 0
push eax
mov byte [ebp - 0x20], 1
call dword [sym.imp.KERNEL32.dll_Wow64DisableWow64FsRedirection]
jmp 0x404e2c
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x20], 0
push 0
sub esp, 8
mov byte [ebp - 4], 0xa
mov eax, esp
lea ecx, [ebx + 4]
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov esi, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.004060d0
mov dword [ebp - 0x1c], eax
test eax, eax
jns 0x404ef0
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp - 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x28]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.0040fbd0
cmp byte [ebp - 0x20], 0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
mov dword [esi], eax
mov byte [esi + 0xc], 0
je 0x404e9c
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_Wow64RevertWow64FsRedirection]
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x404ec1
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404ec1
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404ec1
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
test dword [ebp + 0x1c], 0x4000
jne 0x404fba
push 1
sub esp, 8
lea ecx, [ebx + 4]
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.004060d0
mov dword [ebp - 0x1c], eax
test eax, eax
jns 0x404fba
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp - 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x28]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.0040fbd0
cmp byte [ebp - 0x20], 0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
mov dword [esi], eax
mov byte [esi + 0xc], 0
je 0x404f66
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_Wow64RevertWow64FsRedirection]
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x404f8b
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x404f8b
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x404f8b
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
mov byte [ebp - 4], 5
cmp byte [ebp - 0x20], 0
je 0x404fcd
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_Wow64RevertWow64FsRedirection]
mov eax, dword [ebp + 0x1c]
and eax, 0x10
mov dword [ebp - 0x14], eax
jne 0x4050e3
lea eax, [ebx + 4]
lock inc dword [eax]
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 4], 0xb
mov ecx, dword [esi + 0x48]
mov eax, dword [esi + 0x4c]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], eax
cmp ecx, eax
je 0x4050bc
mov eax, dword [ecx + 0x24]
test eax, 0x20000000
je 0x405026
test eax, eax
jns 0x405015
mov eax, 0x40
jmp 0x40503d
and eax, 0x40000000
neg eax
sbb eax, eax
and eax, 0x10
add eax, 0x10
jmp 0x40503d
test eax, eax
jns 0x405031
mov eax, 4
jmp 0x40503d
test eax, 0x40000000
je 0x405057
mov eax, 2
push 0
push dword [ecx + 8]
push dword [ecx + 0xc]
lea ecx, [esi + 0xf0]
push eax
call fcn.00417850
test eax, eax
js 0x4050bc
jmp 0x4050aa
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
add eax, 0x58
mov dword [ebp - 0x60], eax
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x405079
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x30], eax
jmp 0x40508d
xorps xmm0, xmm0
movlpd qword [ebp - 0x58], xmm0
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x54], eax
mov edx, dword [ecx + 0xc]
xor eax, eax
add edx, dword [ebp - 0x54]
push 0x4000
push dword [ecx + 8]
adc eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x60]
push eax
push edx
call fcn.0041eae0
mov ecx, dword [ebp - 0x1c]
add ecx, 0x28
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [ebp - 0x20]
jne 0x405000
lea ecx, [ebx + 4]
mov byte [ebp - 4], 5
mov eax, edi
lock xadd dword [ecx], eax
jne 0x4050e6
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
jne 0x4050e3
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
lea ecx, [ebx + 4]
test dword [ebp + 0x1c], 0x1000
jne 0x4051a3
sub esp, 8
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.004069f0
mov dword [ebp - 0x20], eax
test eax, eax
jns 0x4051a3
cmp eax, 0xc0000225
je 0x4051a3
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp - 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x28]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.0040fbd0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
mov dword [esi], eax
mov byte [esi + 0xc], 0
test ecx, ecx
je 0x405174
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x405174
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x405174
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
sub esp, 8
lea ecx, [ebx + 4]
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
lock inc dword [ecx]
mov ecx, dword [ebp - 0x10]
mov dword [eax], esi
mov dword [eax + 4], ebx
call fcn.00406dd0
mov dword [ebp - 0x20], eax
test eax, eax
jns 0x40524b
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp - 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x28]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.0040fbd0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
mov dword [esi], eax
mov byte [esi + 0xc], 0
test ecx, ecx
je 0x40521c
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x40521c
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x40521c
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
cmp dword [ebp - 0x14], 0
je 0x4052e7
mov ecx, dword [ebp - 0x10]
lea eax, [esi + 0xf0]
push eax
call fcn.00408fc0
mov dword [ebp - 0x14], eax
test eax, eax
jns 0x4052e7
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [ebp - 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x28]
mov ecx, dword [eax]
add ecx, 0x10
call fcn.0040fbd0
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x18]
mov dword [esi], eax
mov byte [esi + 0xc], 0
test ecx, ecx
je 0x4052b8
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x4052b8
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x4052b8
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x4052fb
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov dword [ebp - 0x1c], ecx
jmp 0x40530c
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x40531c
xor ecx, ecx
add eax, edx
adc ecx, dword [ebp - 0x1c]
jmp 0x40532a
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
mov dword [esi + 0x150], eax
mov eax, dword [ebp + 0x1c]
and al, 2
mov dword [esi + 0x154], ecx
movzx eax, al
neg eax
sbb eax, eax
and eax, 0xff
mov dword [esi + 0x148], eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0x34]
test ecx, ecx
je 0x40537d
push dword [ebp + 0x10]
push dword [eax]
push dword [eax + 0x38]
lea eax, [ebp - 0x40]
push 1
push eax
call ecx
mov eax, dword [ebp - 0x3c]
add esp, 0x14
cmp eax, 0xde
je 0x40537a
mov dword [esi + 0x148], eax
mov eax, dword [ebp - 0x10]
cmp dword [esi + 0x148], 0
je 0x40539a
mov ecx, dword [eax]
lea edx, [esi + 0xf8]
add ecx, 0x1e8
push edx
call fcn.0041a1d0
test dword [ebp + 0x1c], 0x10000
jne 0x40552f
lea eax, [ebx + 4]
lock inc dword [eax]
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 4], 0xc
cmp byte [esi + 0xd], 0
je 0x4053c7
mov eax, dword [esi + 0x18]
add eax, 0xd0
jmp 0x4053cf
mov eax, dword [esi + 0x14]
add eax, 0xc0
mov eax, dword [eax]
test eax, eax
jne 0x4053da
mov dword [ebp + 0x1c], eax
jmp 0x4053e7
push 1
push eax
mov ecx, esi
call fcn.00413510
mov dword [ebp + 0x1c], eax
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x4053fe
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x30], eax
jmp 0x405412
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 8]
cdq
mov ecx, eax
mov esi, edx
mov eax, dword [ebp + 0x1c]
cdq
sub eax, ecx
sbb edx, esi
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
adc edx, dword [ebp - 0x30]
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x405505
cmp dword [eax + 8], 0
je 0x405505
mov esi, dword [ebp - 0x10]
push edx
push dword [ebp - 0x14]
mov ecx, dword [esi]
push dword [ebp - 0x5c]
add ecx, 0x1e8
call fcn.0041a820
mov dword [ebp + 0x1c], eax
mov ecx, edi
mov byte [ebp - 4], 5
lea eax, [ebx + 4]
lock xadd dword [eax], ecx
jne 0x405481
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx]
mov eax, edi
lea ecx, [ebx + 8]
lock xadd dword [ecx], eax
jne 0x405481
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
cmp dword [ebp + 0x1c], 0
jge 0x40552c
mov ecx, dword [ebp - 0x2c]
push 0
call fcn.00412990
push dword [ebp + 0xc]
mov ecx, dword [esi]
push dword [ebp - 0x28]
add ecx, 0x10
call fcn.0040fbd0
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
mov dword [esi], eax
mov byte [esi + 0xc], 0
test ecx, ecx
je 0x4054d6
mov eax, edi
lock xadd dword [ecx + 4], eax
jne 0x4054d6
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [ebp + 0x18]
mov eax, edi
lock xadd dword [ecx + 8], eax
jne 0x4054d6
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
lea ecx, [ebx + 4]
lock xadd dword [ecx], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lea eax, [ebx + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
jmp 0x4055d8
mov byte [ebp - 4], 5
lea ecx, [ebx + 4]
mov eax, edi
lock xadd dword [ecx], eax
jne 0x40552c
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
mov eax, edi
lea ecx, [ebx + 8]
lock xadd dword [ecx], eax
jne 0x40552c
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x405540
mov ecx, dword [eax]
mov eax, dword [eax + 4]
jmp 0x40554e
xorps xmm0, xmm0
movlpd qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
lea edx, [esi + 0x160]
push edx
push eax
push ecx
mov ecx, esi
call fcn.004135b0
push 0
mov ecx, esi
call fcn.00412990
mov eax, dword [esi + 0xf0]
test eax, eax
je 0x405575
mov byte [eax + 0x10], 0
mov ecx, dword [ebp - 0x10]
add ecx, 0x20
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 8]
je 0x405590
mov dword [eax + 4], ebx
xor ebx, ebx
mov dword [eax], esi
add dword [ecx + 4], 8
jmp 0x40559d
lea edx, [ebp - 0x68]
push edx
push eax
call fcn.00409fc0
mov ebx, dword [ebp - 0x64]
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
mov dword [esi], 0
mov dword [esi + 4], eax
mov eax, dword [ebp + 0x18]
mov dword [esi + 8], eax
mov byte [esi + 0xc], 1
test ebx, ebx
je 0x4055d8
mov eax, edi
lock xadd dword [ebx + 4], eax
jne 0x4055d8
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax]
lock xadd dword [ebx + 8], edi
dec edi
jne 0x4055d8
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 4]
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x18
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
call fcn.00403880
call fcn.004e34cc
int3