Function at 0x45b420
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x525868
mov eax, dword fs:[0]
push eax
sub esp, 0x60
push ebx
push esi
push edi
mov eax, dword [0x595cb8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x28], edi
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45b462
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 0
mov ebx, dword [ebp + 8]
mov ecx, ebx
push str.keyParent
call fcn.00438d70
cmp eax, 0x59c858
je 0x45c853
mov al, byte [ebx + 8]
test al, al
je 0x45b4b0
cmp al, 7
je 0x45b4b0
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov al, byte [ebx + 8]
test al, al
jne 0x45b4be
mov ecx, 0x59c858
jmp 0x45b4f4
mov esi, dword [ebx]
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x60], str.keyParent
push eax
mov ecx, esi
mov dword [ebp - 0x5c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45b4ea
mov ecx, 0x59c858
jmp 0x45b4ed
lea ecx, [eax + 0x18]
mov byte [ebp - 4], 0
mov al, byte [ebx + 8]
cmp byte [ecx + 8], 4
jne 0x45c853
test al, al
je 0x45b51d
cmp al, 7
je 0x45b51d
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [ebx + 8], 0
jne 0x45b52a
mov esi, 0x59c858
jmp 0x45b55d
mov esi, dword [ebx]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x58], str.keyParent
push eax
mov ecx, esi
mov dword [ebp - 0x54], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45b556
mov esi, 0x59c858
jmp 0x45b559
lea esi, [eax + 0x18]
mov byte [ebp - 4], 0
cmp byte [esi + 8], 4
je 0x45b57a
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edi, dword [esi]
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45b591
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x20], esi
mov byte [ebp - 4], 9
test edi, edi
je 0x45b5c6
test edi, 0xffff0000
jne 0x45b5c6
movzx edi, di
mov ecx, edi
call fcn.0041f3d0
test eax, eax
je 0x45b5d2
push edi
push eax
lea ecx, [ebp - 0x20]
call fcn.0041fbd0
jmp 0x45b5cf
push edi
lea ecx, [ebp - 0x20]
call fcn.0041fa30
mov esi, dword [ebp - 0x20]
push str.keyName
mov ecx, ebx
mov byte [ebp - 4], 0xa
call fcn.00438d70
cmp eax, 0x59c858
je 0x45c745
mov al, byte [ebx + 8]
test al, al
je 0x45b60f
cmp al, 7
je 0x45b60f
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [ebx + 8], 0
jne 0x45b61c
mov eax, 0x59c858
jmp 0x45b64f
mov edi, dword [ebx]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.keyName
push eax
mov ecx, edi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [edi]
jne 0x45b648
mov eax, 0x59c858
jmp 0x45b64b
add eax, 0x18
mov byte [ebp - 4], 0xa
cmp byte [eax + 8], 4
jne 0x45c745
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45b66e
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0x11
mov al, byte [ebx + 8]
test al, al
je 0x45b69f
cmp al, 7
je 0x45b69f
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [ebx + 8], 0
jne 0x45b6ac
mov edi, 0x59c858
jmp 0x45b6df
mov edi, dword [ebx]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.keyName
push eax
mov ecx, edi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [edi]
jne 0x45b6d8
mov edi, 0x59c858
jmp 0x45b6db
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x11
cmp byte [edi + 8], 4
je 0x45b6fc
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x45b706
xor ecx, ecx
jmp 0x45b719
mov ecx, edx
lea edi, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x45b710
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x1c]
call fcn.0042cb10
lea edx, [ebp - 0x14]
lea ecx, [ebp - 0x1c]
call fcn.0042c0f0
push 0x56de40
push 0x571f34
lea ecx, [ebp - 0x14]
call fcn.00421760
push str.valueName
mov ecx, ebx
call fcn.00438d70
cmp eax, 0x59c858
je 0x45c614
mov al, byte [ebx + 8]
test al, al
je 0x45b779
cmp al, 7
je 0x45b779
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [ebx + 8], 0
jne 0x45b786
mov eax, 0x59c858
jmp 0x45b7b9
mov edi, dword [ebx]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.valueName
push eax
mov ecx, edi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [edi]
jne 0x45b7b2
mov eax, 0x59c858
jmp 0x45b7b5
add eax, 0x18
mov byte [ebp - 4], 0x11
cmp byte [eax + 8], 4
jne 0x45c614
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45b7d8
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 0x1a
mov al, byte [ebx + 8]
test al, al
je 0x45b809
cmp al, 7
je 0x45b809
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [ebx + 8], 0
jne 0x45b816
mov edi, 0x59c858
jmp 0x45b849
mov edi, dword [ebx]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.valueName
push eax
mov ecx, edi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [edi]
jne 0x45b842
mov edi, 0x59c858
jmp 0x45b845
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x1a
cmp byte [edi + 8], 4
je 0x45b866
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [edi]
test edx, edx
jne 0x45b870
xor ecx, ecx
jmp 0x45b87e
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x45b875
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x1c]
call fcn.0042cb10
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x1c]
call fcn.0042c0f0
push str.value
mov ecx, ebx
call fcn.00438d70
cmp eax, 0x59c858
jne 0x45b9a6
push str.value_error
lea ecx, [ebp - 0x30]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1d
call fcn.0041f910
mov byte [ebp - 4], 0x1e
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45b8e1
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x38], edi
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x1f
push eax
lea edx, [ebp - 0x38]
lea ecx, [ebp - 0x34]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x20
cmp dword [eax + 0xc], 0
je 0x45b921
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x1f
or eax, 0xffffffff
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b940
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x1e
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b95e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1d
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b97c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov eax, edi
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b99a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x24]
jmp 0x45c6ed
push ecx
lea ebx, [esi - 0x10]
mov edi, esp
mov dword [ebp - 0x54], edi
mov ecx, ebx
mov dword [ebp - 0x30], ebx
call fcn.0041fb10
add eax, 0x10
mov dword [edi], eax
call fcn.0042b920
mov esi, eax
add esp, 4
test esi, esi
jne 0x45bb1f
push str.undefined_keyParent_error
lea ecx, [ebp - 0x30]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x21
call fcn.0041f910
mov byte [ebp - 4], 0x22
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45ba07
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x38], esi
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 0x23
push eax
lea edx, [ebp - 0x38]
lea ecx, [ebp - 0x34]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x24
cmp dword [eax + 0xc], 0
je 0x45ba47
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x23
or edi, 0xffffffff
mov edx, dword [ebp - 0x34]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45ba68
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x22
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45ba83
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x21
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45baa1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov eax, edi
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45babf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x11
mov eax, edi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45badd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, edi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bafb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x45c73d
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
or ebx, 0xffffffff
jmp 0x45c93d
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
push 0x2001f
mov byte [ebp - 4], 0x25
lea ecx, [ebp - 0x6c]
mov ebx, dword [ebp - 0x14]
push ebx
push esi
call fcn.0042b000
mov edi, eax
mov dword [ebp - 0x2c], edi
test edi, edi
je 0x45c21d
cmp edi, 2
jne 0x45bf2e
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x38]
mov dword [ebp - 0x18], 0
push eax
lea eax, [ebp - 0x18]
push eax
test ecx, ecx
je 0x45bb87
sub esp, 0x14
push ebx
push esi
call fcn.0044ef90
mov esi, eax
mov dword [ebp - 0x2c], esi
jmp 0x45bba1
push 0
push 0x2001f
push 0
push 0
push 0
push ebx
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov esi, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x6c]
test esi, esi
jne 0x45bbd5
mov dword [ebp - 0x2c], esi
test eax, eax
je 0x45bbbb
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, eax
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x6c], edi
test esi, esi
je 0x45c223
jmp 0x45bbd8
mov dword [ebp - 0x18], eax
push 0x56d0dc
lea ecx, [ebp - 0x38]
call fcn.0041f910
push 0x56d0dc
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0x26
call fcn.0041f910
push str.WriteRefCreateKey
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x27
call fcn.0041f910
mov byte [ebp - 4], 0x28
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45bc20
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x3c], esi
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x29
push eax
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x54]
call fcn.00420f70
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0x2a
push ecx
mov edx, eax
lea ecx, [ebp - 0x4c]
call fcn.00420f70
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0x2b
push ecx
mov edx, eax
lea ecx, [ebp - 0x48]
call fcn.00420f70
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x2c
push ecx
mov edx, eax
lea ecx, [ebp - 0x44]
call fcn.00420f70
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x2d
push ecx
mov edx, eax
lea ecx, [ebp - 0x40]
call fcn.00420f70
add esp, 0x14
mov edx, dword [ebp - 0x2c]
mov ecx, eax
mov byte [ebp - 4], 0x2e
call fcn.00422050
mov byte [ebp - 4], 0x2d
or edi, 0xffffffff
mov edx, dword [ebp - 0x40]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bcb8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2c
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bcd6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2b
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bcf4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2a
mov eax, edi
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bd12
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x29
mov eax, edi
mov edx, dword [ebp - 0x54]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bd30
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x28
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45bd4b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x27
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bd69
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x26
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bd87
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x25
mov eax, edi
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bda5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.Create_error
lea ecx, [ebp - 0x38]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x2f
call fcn.0041f910
mov byte [ebp - 4], 0x30
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45bddc
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x54], esi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0x31
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x48]
call fcn.00420f70
push dword [ebp - 0x2c]
mov edx, eax
mov byte [ebp - 4], 0x32
lea ecx, [ebp - 0x4c]
call fcn.00420ee0
add esp, 8
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x33
cmp dword [eax + 0xc], 0
je 0x45be2d
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x32
mov eax, edi
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45be4b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x31
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45be69
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x30
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45be84
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x2f
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bea2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x25
mov eax, edi
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bec0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x45bece
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45beec
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, edi
mov byte [ebp - 4], 0xa
add ebx, 0xfffffff0
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x45bf07
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, edi
mov edx, dword [ebp - 0x30]
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c73d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
or ebx, 0xffffffff
jmp 0x45c93d
push 0x56d0dc
lea ecx, [ebp - 0x34]
call fcn.0041f910
push 0x56d0dc
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x34
call fcn.0041f910
push str.WriteRegOpenKey
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x35
call fcn.0041f910
mov byte [ebp - 4], 0x36
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45bf76
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x54], esi
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x37
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x3c]
call fcn.00420f70
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x38
push ecx
mov edx, eax
lea ecx, [ebp - 0x40]
call fcn.00420f70
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0x39
push ecx
mov edx, eax
lea ecx, [ebp - 0x44]
call fcn.00420f70
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0x3a
push ecx
mov edx, eax
lea ecx, [ebp - 0x48]
call fcn.00420f70
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x3b
push ecx
mov edx, eax
lea ecx, [ebp - 0x4c]
call fcn.00420f70
add esp, 0x14
mov edx, edi
mov byte [ebp - 4], 0x3c
mov ecx, eax
call fcn.00422050
mov byte [ebp - 4], 0x3b
or edi, 0xffffffff
mov edx, dword [ebp - 0x4c]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c00d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3a
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c02b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x39
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c049
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x38
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c067
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x37
mov eax, edi
mov edx, dword [ebp - 0x3c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c085
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x36
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c0a0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x35
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c0be
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x34
mov eax, edi
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c0dc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x25
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c0fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.Open_error
lea ecx, [ebp - 0x38]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x3d
call fcn.0041f910
mov byte [ebp - 4], 0x3e
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45c131
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x54], esi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0x3f
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x48]
call fcn.00420f70
push dword [ebp - 0x2c]
mov edx, eax
mov byte [ebp - 4], 0x40
lea ecx, [ebp - 0x4c]
call fcn.00420ee0
add esp, 8
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x41
cmp dword [eax + 0xc], 0
je 0x45c182
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x40
mov eax, edi
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c1a0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c1be
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3e
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c1d9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3d
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c1f7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x25
mov eax, edi
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c215
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x6c]
jmp 0x45bec3
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x18], eax
mov esi, dword [ebp + 8]
mov al, byte [esi + 8]
test al, al
je 0x45c248
cmp al, 7
je 0x45c248
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov al, byte [esi + 8]
mov byte [ebp - 0xd], al
test al, al
jne 0x45c259
mov ecx, 0x59c858
jmp 0x45c292
mov esi, dword [esi]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c285
mov ecx, 0x59c858
jmp 0x45c288
lea ecx, [eax + 0x18]
mov al, byte [ebp - 0xd]
mov byte [ebp - 4], 0x25
mov esi, dword [ebp + 8]
mov cl, byte [ecx + 8]
mov edi, dword [ebp - 0x24]
cmp cl, 1
je 0x45c2b0
cmp cl, 2
je 0x45c2b0
cmp cl, 5
je 0x45c2b0
cmp cl, 3
jne 0x45c393
test al, al
je 0x45c2cf
cmp al, 7
je 0x45c2cf
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov al, byte [esi + 8]
mov byte [ebp - 0xd], al
test al, al
jne 0x45c2e0
mov ecx, 0x59c858
jmp 0x45c319
mov esi, dword [esi]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c30c
mov ecx, 0x59c858
jmp 0x45c30f
lea ecx, [eax + 0x18]
mov al, byte [ebp - 0xd]
mov byte [ebp - 4], 0x25
mov esi, dword [ebp + 8]
cmp byte [ecx + 8], 5
je 0x45c393
test al, al
je 0x45c33e
cmp al, 7
je 0x45c33e
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x45c34b
mov ecx, 0x59c858
jmp 0x45c37e
mov esi, dword [esi]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x58], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x54], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c377
mov ecx, 0x59c858
jmp 0x45c37a
lea ecx, [eax + 0x18]
mov byte [ebp - 4], 0x25
call fcn.00438670
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
push 4
push eax
push 4
jmp 0x45c5ea
mov al, byte [ebp - 0xd]
test al, al
je 0x45c3b5
cmp al, 7
je 0x45c3b5
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
mov cl, byte [esi + 8]
mov byte [ebp - 0xd], cl
test cl, cl
jne 0x45c3c6
mov eax, 0x59c858
jmp 0x45c3ff
mov esi, dword [esi]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c3f2
mov eax, 0x59c858
jmp 0x45c3f5
add eax, 0x18
mov cl, byte [ebp - 0xd]
mov byte [ebp - 4], 0x25
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 4
jne 0x45c53c
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45c41e
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp + 8], eax
mov byte [ebp - 4], 0x4a
mov al, byte [esi + 8]
test al, al
je 0x45c44f
cmp al, 7
je 0x45c44f
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x45c45c
mov esi, 0x59c858
jmp 0x45c48f
mov esi, dword [esi]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c488
mov esi, 0x59c858
jmp 0x45c48b
lea esi, [eax + 0x18]
mov byte [ebp - 4], 0x4a
cmp byte [esi + 8], 4
je 0x45c4ac
push 0x2a9
push 0x56ef58
push str.type___stringValue
call fcn.00508598
add esp, 0xc
mov edx, dword [esi]
test edx, edx
jne 0x45c4b6
xor ecx, ecx
jmp 0x45c4c9
mov ecx, edx
lea esi, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x45c4c0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x1c]
call fcn.0042cb10
lea edx, [ebp + 8]
lea ecx, [ebp - 0x1c]
call fcn.0042c0f0
mov esi, dword [ebp + 8]
test esi, esi
je 0x45c517
mov ecx, esi
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45c4f0
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
mov eax, dword [ebp - 0x18]
push esi
push 1
push 0
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov byte [ebp - 4], 0x25
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c5f7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x45c5f7
test cl, cl
je 0x45c55c
cmp cl, 7
je 0x45c55c
push 0x42b
push 0x56ef58
push str.type___nullValue__type___objectValue
call fcn.00508598
add esp, 0xc
cmp byte [esi + 8], 0
jne 0x45c569
mov eax, 0x59c858
jmp 0x45c59f
mov esi, dword [esi]
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x50], str.value
push eax
mov ecx, esi
mov dword [ebp - 0x4c], 0
call fcn.004390f0
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x45c595
mov eax, 0x59c858
jmp 0x45c598
add eax, 0x18
mov byte [ebp - 4], 0x25
mov esi, dword [ebp + 8]
cmp byte [eax + 8], 5
jne 0x45c5f7
push str.value
mov ecx, esi
call fcn.00438d70
mov ecx, eax
call fcn.004388a0
mov ecx, str.false
test al, al
mov edx, str.true
cmove edx, ecx
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45c5d0
sub ecx, esi
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
mov eax, dword [ebp - 0x18]
push 0
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x45c605
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x11
or edi, 0xffffffff
jmp 0x45bed8
push str.valueName_error
lea ecx, [ebp - 0x38]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x16
call fcn.0041f910
mov byte [ebp - 4], 0x17
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45c64b
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x54], edi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0x18
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x4c]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x19
cmp dword [eax + 0xc], 0
je 0x45c68b
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0x18
or eax, 0xffffffff
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c6aa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x17
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c6c8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x16
mov eax, edi
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c6e6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x38]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c704
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, edi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c722
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c73d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
or ebx, 0xffffffff
jmp 0x45c93d
push str.keyName_error
lea ecx, [ebp - 0x38]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0xd
call fcn.0041f910
mov byte [ebp - 4], 0xe
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45c77c
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x54], edi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xf
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x4c]
call fcn.00420f70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0x10
cmp dword [eax + 0xc], 0
je 0x45c7bc
push 2
push ecx
lea ecx, [ebp + 8]
add eax, 8
push ecx
push eax
call fcn.004210a0
mov byte [ebp - 4], 0xf
or ebx, 0xffffffff
mov edx, dword [ebp - 0x4c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c7dd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xe
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x45c7f8
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xd
mov eax, ebx
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c816
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, ebx
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c834
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c93d
mov ecx, dword [esi]
push esi
jmp 0x45c938
push str.keyParent_error
lea ecx, [ebp - 0x38]
call fcn.0041f870
push str.writeRegistry
lea ecx, [ebp + 8]
mov byte [ebp - 4], 3
call fcn.0041f910
mov byte [ebp - 4], 4
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x45c88a
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x54], esi
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 5
push eax
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x4c]
call fcn.00420f70
add esp, 4
mov byte [ebp - 4], 6
cmp dword [edi + 0xc], 0
je 0x45c8c5
push 2
push eax
lea eax, [ebp + 8]
push eax
lea eax, [edi + 8]
push eax
call fcn.004210a0
mov byte [ebp - 4], 5
or ebx, 0xffffffff
mov edx, dword [ebp - 0x4c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c8e6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x45c901
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c91f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x38]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45c93d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x45c95c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4