Function at 0x457610
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x52d478
mov eax, dword fs:[0]
push eax
sub esp, 0x30
push ebx
push esi
push edi
mov eax, dword [0x568fd0]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x1c], edi
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
mov dword [esp + 0x30], ecx
test ecx, ecx
je 0x457654
mov esi, dword [ecx + 0x1c]
jmp 0x457656
xor esi, esi
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov dword [esp + 0x34], esi
test esi, esi
jne 0x4576a9
cmp ecx, eax
jne 0x4576b0
mov ecx, dword [ebp + 0xc]
mov dword [edi + 0xc0], ecx
mov ebx, 0x54e660
lea eax, [esp + 0x30]
mov ecx, edx
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x45768f
mov eax, dword [eax + 8]
mov esi, eax
test eax, eax
jne 0x457694
mov esi, 0x53741c
lea eax, [edi + 0xb0]
test esi, esi
jne 0x4577ce
xor ecx, ecx
jmp 0x4577e2
mov ecx, dword [esi + 8]
test ecx, ecx
jne 0x4576b5
mov ecx, 0x53741c
lea eax, [esp + 0x18]
push eax
call fcn.0040ace0
lea ebx, [esp + 0x18]
mov dword [esp + 0x48], 0
call fcn.0042bf40
mov ebx, eax
call fcn.0042bfc0
mov ecx, dword [esp + 0x18]
cmp dword [ecx - 0xc], 0
je 0x45779a
test esi, esi
je 0x4576f0
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x4576f5
mov ecx, 0x53741c
lea edx, [esp + 0x24]
push edx
call fcn.0040ace0
mov edi, dword [esp + 0x1c]
add edi, 0xd0
lea ebx, [esp + 0x24]
mov byte [esp + 0x48], 1
call fcn.00444920
mov ecx, dword [esp + 0x18]
mov esi, eax
mov edi, dword [esi]
lea eax, [ecx - 0x10]
sub edi, 0x10
cmp eax, edi
je 0x45776d
cmp dword [edi + 0xc], 0
lea ebx, [edi + 0xc]
jl 0x457762
mov edx, dword [eax]
cmp edx, dword [edi]
jne 0x457762
call fcn.0040d630
mov dword [esp + 0x2c], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x457757
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov ecx, dword [esp + 0x2c]
add ecx, 0x10
mov dword [esi], ecx
jmp 0x45776d
mov ebx, dword [ecx - 0xc]
push ecx
mov eax, esi
call fcn.0040aea0
mov byte [esp + 0x48], 0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x457792
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x34]
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4577c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esi + 0x10]
mov ecx, dword [esp + 0x30]
jmp 0x457656
mov ecx, esi
lea ebx, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4577d3
sub ecx, ebx
sar ecx, 1
push esi
mov ebx, ecx
call fcn.0040aea0
mov ecx, dword [ebp + 8]
mov ebx, str.minWidth
lea eax, [esp + 0x30]
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x4578bf
test eax, eax
je 0x4578bf
mov eax, dword [eax + 8]
test eax, eax
je 0x4578bf
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
test eax, eax
jge 0x4578bf
mov esi, dword [ebp + 8]
xor eax, eax
mov dword [edi + 0x20], eax
mov ebx, str.minHeight
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457883
test eax, eax
je 0x457883
mov eax, dword [eax + 8]
test eax, eax
je 0x457883
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
test eax, eax
jl 0x45790d
mov ebx, str.minHeight
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x45790d
test eax, eax
je 0x45790d
mov eax, dword [eax + 8]
test eax, eax
je 0x45790d
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x45790f
mov esi, dword [ebp + 8]
mov ebx, str.minWidth
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x45783c
test eax, eax
je 0x45783c
mov eax, dword [eax + 8]
test eax, eax
je 0x45783c
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x45783e
xor eax, eax
mov dword [edi + 0x24], eax
mov ebx, str.maxWidth
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x45794e
test eax, eax
je 0x45794e
mov eax, dword [eax + 8]
test eax, eax
je 0x45794e
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457950
xor eax, eax
mov dword [edi + 0x28], eax
mov ebx, str.maxHeight
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x45798f
test eax, eax
je 0x45798f
mov eax, dword [eax + 8]
test eax, eax
je 0x45798f
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457991
xor eax, eax
mov dword [edi + 0x2c], eax
mov ebx, str.width
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x4579b1
mov eax, dword [eax + 8]
test eax, eax
jne 0x4579b5
xor eax, eax
jmp 0x4579c2
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
mov dword [edi + 0x30], eax
mov ebx, str.height
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x4579e2
mov eax, dword [eax + 8]
test eax, eax
jne 0x4579e6
xor eax, eax
jmp 0x4579f3
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
mov dword [edi + 0x34], eax
mov ebx, str.value
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457a36
test eax, eax
je 0x457a23
mov eax, dword [eax + 8]
test eax, eax
jne 0x457a27
xor eax, eax
jmp 0x457a39
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457a39
or eax, 0xffffffff
mov dword [edi + 0x10], eax
mov ebx, str.index
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457a7c
test eax, eax
je 0x457a69
mov eax, dword [eax + 8]
test eax, eax
jne 0x457a6d
xor eax, eax
jmp 0x457a7f
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457a7f
or eax, 0xffffffff
mov dword [edi + 0x14], eax
mov ebx, 0x551de0
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x457aa1
mov eax, dword [eax + 8]
mov esi, eax
test eax, eax
jne 0x457aa6
mov esi, 0x53741c
lea eax, [edi + 0xb4]
test esi, esi
jne 0x457ab4
xor ecx, ecx
jmp 0x457acf
mov ecx, esi
lea ebx, [ecx + 2]
lea esp, [esp]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x457ac0
sub ecx, ebx
sar ecx, 1
push esi
mov ebx, ecx
call fcn.0040aea0
mov ecx, dword [ebp + 8]
mov ebx, str.tipDelay
lea eax, [esp + 0x30]
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457b18
test eax, eax
je 0x457b05
mov eax, dword [eax + 8]
test eax, eax
jne 0x457b09
xor eax, eax
jmp 0x457b1d
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457b1d
mov eax, 0x1f4
mov esi, dword [ebp + 8]
mov dword [edi + 0xb8], eax
mov ebx, str.tipTime
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457b66
test eax, eax
je 0x457b53
mov eax, dword [eax + 8]
test eax, eax
jne 0x457b57
xor eax, eax
jmp 0x457b6b
push 0xa
push 0
push eax
call fcn.005029c7
add esp, 0xc
jmp 0x457b6b
mov eax, 0xfa0
mov dword [edi + 0xbc], eax
mov ebx, str.style
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x457b90
mov eax, dword [eax + 8]
mov edx, eax
test eax, eax
jne 0x457b95
mov edx, 0x53741c
lea esi, [edi + 0xa8]
test edx, edx
jne 0x457ba3
xor eax, eax
jmp 0x457bbf
mov eax, edx
lea ebx, [eax + 2]
jmp 0x457bb0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x457bb0
sub eax, ebx
sar eax, 1
mov ebx, eax
push edx
mov eax, esi
call fcn.0040aea0
mov ebx, esi
call fcn.0042bf40
mov ebx, eax
call fcn.0042bfc0
mov eax, dword [edi + 0x20]
cmp dword [edi + 0x30], eax
jge 0x457be2
mov dword [edi + 0x30], eax
mov ecx, dword [edi + 0x28]
cmp ecx, eax
jle 0x457bf1
cmp dword [edi + 0x30], ecx
jle 0x457bf1
mov dword [edi + 0x30], ecx
mov ecx, dword [edi + 0x24]
cmp dword [edi + 0x34], ecx
jge 0x457bfc
mov dword [edi + 0x34], ecx
mov eax, dword [edi + 0x2c]
cmp eax, ecx
jle 0x457c0b
cmp dword [edi + 0x34], eax
jle 0x457c0b
mov dword [edi + 0x34], eax
mov esi, dword [ebp + 8]
mov ebx, str.visible
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457c64
test eax, eax
je 0x457c3b
mov eax, dword [eax + 8]
test eax, eax
jne 0x457c3f
xor al, al
jmp 0x457c66
movzx eax, word [eax]
cmp ax, 0x31
je 0x457c64
cmp ax, 0x74
je 0x457c64
cmp ax, 0x54
je 0x457c64
cmp ax, 0x79
je 0x457c64
cmp ax, 0x59
je 0x457c64
xor al, al
jmp 0x457c66
mov al, 1
mov byte [edi + 0x9c], al
mov ebx, str.enable
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457cc2
test eax, eax
je 0x457c99
mov eax, dword [eax + 8]
test eax, eax
jne 0x457c9d
xor al, al
jmp 0x457cc4
movzx eax, word [eax]
cmp ax, 0x31
je 0x457cc2
cmp ax, 0x74
je 0x457cc2
cmp ax, 0x54
je 0x457cc2
cmp ax, 0x79
je 0x457cc2
cmp ax, 0x59
je 0x457cc2
xor al, al
jmp 0x457cc4
mov al, 1
mov byte [edi + 0x9d], al
mov ebx, str.mouseEnable
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457d20
test eax, eax
je 0x457cf7
mov eax, dword [eax + 8]
test eax, eax
jne 0x457cfb
xor al, al
jmp 0x457d22
movzx eax, word [eax]
cmp ax, 0x31
je 0x457d20
cmp ax, 0x74
je 0x457d20
cmp ax, 0x54
je 0x457d20
cmp ax, 0x79
je 0x457d20
cmp ax, 0x59
je 0x457d20
xor al, al
jmp 0x457d22
mov al, 1
mov byte [edi + 0x9f], al
mov ebx, str.mouseChildren
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457d7e
test eax, eax
je 0x457d55
mov eax, dword [eax + 8]
test eax, eax
jne 0x457d59
xor al, al
jmp 0x457d80
movzx eax, word [eax]
cmp ax, 0x31
je 0x457d7e
cmp ax, 0x74
je 0x457d7e
cmp ax, 0x54
je 0x457d7e
cmp ax, 0x79
je 0x457d7e
cmp ax, 0x59
je 0x457d7e
xor al, al
jmp 0x457d80
mov al, 1
mov edx, dword [edi]
mov byte [edi + 0xa0], al
mov eax, dword [edx + 0x2c]
mov ecx, edi
call eax
cmp eax, 0x64
mov ebx, str.focus
lea eax, [esp + 0x30]
mov ecx, esi
setle byte [esp + 0x14]
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457df1
test eax, eax
je 0x457dc4
mov eax, dword [eax + 8]
test eax, eax
jne 0x457dc8
xor al, al
jmp 0x457df5
movzx eax, word [eax]
cmp ax, 0x31
je 0x457ded
cmp ax, 0x74
je 0x457ded
cmp ax, 0x54
je 0x457ded
cmp ax, 0x79
je 0x457ded
cmp ax, 0x59
je 0x457ded
xor al, al
jmp 0x457df5
mov al, 1
jmp 0x457df5
mov al, byte [esp + 0x14]
mov byte [edi + 0x9e], al
mov ebx, str.transparent
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov edx, eax
neg edx
sbb edx, edx
test edx, fcn.004c8c20
je 0x457e4d
test eax, eax
je 0x457e4d
mov eax, dword [eax + 8]
test eax, eax
je 0x457e4d
movzx eax, word [eax]
cmp ax, 0x31
je 0x457e49
cmp ax, 0x74
je 0x457e49
cmp ax, 0x54
je 0x457e49
cmp ax, 0x79
je 0x457e49
cmp ax, 0x59
jne 0x457e4d
mov al, 1
jmp 0x457e4f
xor al, al
mov byte [edi + 0xa1], al
mov ebx, str.background
lea eax, [esp + 0x30]
mov ecx, esi
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x457e74
mov eax, dword [eax + 8]
mov edx, eax
test eax, eax
jne 0x457e79
mov edx, 0x53741c
lea eax, [edi + 0xa4]
test edx, edx
jne 0x457e87
xor ecx, ecx
jmp 0x457e9f
mov ecx, edx
lea edi, [ecx + 2]
lea esp, [esp]
mov si, word [ecx]
add ecx, 2
test si, si
jne 0x457e90
sub ecx, edi
sar ecx, 1
push edx
mov ebx, ecx
call fcn.0040aea0
mov ecx, dword [ebp + 8]
push 0x53741c
mov ebx, str.cursor
lea esi, [esp + 0x30]
call fcn.00462670
add esp, 4
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x48], 2
mov ecx, dword [eax]
mov esi, dword [edi + 0xac]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x457f2a
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x457f1b
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x457f1b
call fcn.0040d630
mov dword [esp + 0x30], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x457f0c
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x30]
add ecx, 0x10
mov dword [edi + 0xac], ecx
jmp 0x457f2a
mov ebx, dword [ecx - 0xc]
push ecx
lea eax, [edi + 0xac]
call fcn.0040aea0
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x457f52
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [edi + 0xac]
mov ebx, esi
call fcn.0042bf40
mov ebx, eax
call fcn.0042bfc0
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
je 0x457f89
call fcn.00459bb0
mov dword [edi + 0xc8], eax
test eax, eax
jne 0x457f93
mov dword [edi + 0xc8], 0xffffffff
jmp 0x457f93
mov dword [edi + 0xc8], 0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
mov ecx, dword [ebp + 8]
mov esi, eax
mov ebx, str.state
lea eax, [esp + 0x30]
call fcn.0041a740
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
sbb ecx, ecx
test ecx, fcn.004c8c20
je 0x457fde
test eax, eax
je 0x457fcd
mov eax, dword [eax + 8]
test eax, eax
jne 0x457fd2
mov eax, 0x53741c
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
jmp 0x457fea
mov edx, dword [edi]
mov eax, dword [edx + 0x17c]
mov ecx, edi
call eax
mov ebx, eax
test ebx, ebx
je 0x457ff8
mov edx, dword [ebx]
mov eax, dword [edx]
mov ecx, ebx
call eax
mov ecx, dword [edi + 0x50]
test ecx, ecx
je 0x458006
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 8]
mov dword [edi + 0x50], ebx
mov ebx, str.layout
lea eax, [esp + 0x30]
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x458029
mov eax, dword [eax + 8]
mov ecx, eax
test eax, eax
jne 0x45802e
mov ecx, 0x53741c
lea edx, [esp + 0x20]
push edx
call fcn.0040ace0
lea ebx, [esp + 0x20]
mov dword [esp + 0x48], 3
call fcn.0042bf40
mov ebx, eax
call fcn.0042bfc0
mov eax, dword [esp + 0x20]
cmp dword [eax - 0xc], 0
jne 0x458084
mov eax, dword [edi]
mov edx, dword [eax + 0x180]
mov ecx, edi
call edx
mov ebx, eax
test ebx, ebx
je 0x458074
mov eax, dword [ebx]
mov edx, dword [eax]
mov ecx, ebx
call edx
mov ecx, dword [edi + 0x4c]
test ecx, ecx
je 0x4580aa
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
jmp 0x4580aa
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0xc]
mov ecx, esi
call eax
mov ebx, eax
test ebx, ebx
je 0x45809c
mov edx, dword [ebx]
mov eax, dword [edx]
mov ecx, ebx
call eax
mov ecx, dword [edi + 0x4c]
test ecx, ecx
je 0x4580aa
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov ecx, ebx
mov dword [edi + 0x4c], ebx
test ecx, ecx
je 0x4580be
mov edx, dword [ecx]
mov eax, dword [ebp + 8]
mov edx, dword [edx + 8]
push eax
call edx
push 0
push 0
push 0
push 0
add edi, 0xf0
push edi
call dword [sym.imp.USER32.dll_SetRect]
mov ecx, dword [ebp + 8]
mov ebx, str.paddingView
lea eax, [esp + 0x24]
call fcn.0041a740
mov eax, dword [eax]
test eax, eax
je 0x4580f3
mov eax, dword [eax + 8]
mov ecx, eax
test eax, eax
jne 0x4580f8
mov ecx, 0x53741c
lea eax, [esp + 0x28]
push eax
call fcn.0040ace0
mov byte [esp + 0x48], 4
mov ecx, dword [esp + 0x28]
cmp dword [ecx - 0xc], 0
je 0x458120
push 4
push edi
call fcn.00462b00
mov ecx, dword [esp + 0x30]
add esp, 8
lea eax, [ecx - 0x10]
mov byte [esp + 0x48], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x458141
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x48], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x458169
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8